【问题标题】:Selecting part of a string in Pandas Series在 Pandas 系列中选择字符串的一部分
【发布时间】:2020-10-26 17:30:21
【问题描述】:

我有一个字符串如下:2020-01-01T16:30.00 - 1.00。我想选择介于 T - 之间的字符串,即我希望能够从整个字符串中选择 16:30.00 并将其转换为浮点数。任何帮助表示赞赏。

【问题讨论】:

  • 您应该使用datetime 类型的日期/时间数据。
  • 数据采用我展示的格式。如何从中选择时间部分。
  • df['your_column'].apply( lambda x: str(x)[-15:-7] ),当且仅当格式保持不变时
  • 不一样,我在找一般的东西。
  • 我找到了以下有效的答案。 stackoverflow.com/questions/39662149/…

标签: python regex pandas dataframe series


【解决方案1】:

如果你有这样的熊猫系列s

import pandas as pd
s = pd.Series(["2020-01-01T16:30.00 - 1.00", "2020-12-04T00:25.00 - 14.00"])

你可以使用

s.str.replace(".+T", "").str.replace(" -.+", "")
# 0    16:30.00
# 1    00:25.00
# dtype: object

基本上,您首先用空字符串替换TT 本身之前的所有内容。然后,用空字符串替换以 - 开头的部分(小破折号前有一个空格)。


另一种选择是使用正则表达式组来匹配特定模式并仅选择其中一个组(在本例中为第二组,.+

import re
s.apply(lambda x: re.match("(.+T)(.+)( -.+)", x).group(2))
# 0    16:30.00
# 1    00:25.00
# dtype: object

【讨论】:

  • 谢谢,使用日期时间库是另一种方法。我在其中一个 stackoverflow 答案中找到了它。
  • 看到了,很有用的链接!
  • @S_Scouse 如果您想检查一下,刚刚添加了另一个解决方案
  • 谢谢,很有用。我可能会将它用于其他一些字符串选择需求。
猜你喜欢
  • 2021-04-20
  • 2018-02-03
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多