在 Pandas 系列中选择字符串的一部分

Posted

技术标签:

【中文标题】在 Pandas 系列中选择字符串的一部分【英文标题】:Selecting part of a string in Pandas Series 【发布时间】: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] ),当且仅当格式保持不变时 不一样,我在找一般的东西。 我找到了以下有效的答案。 ***.com/questions/39662149/… 【参考方案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

【讨论】:

谢谢,使用日期时间库是另一种方法。我在其中一个 *** 答案中找到了它。 看到了,很有用的链接! @S_Scouse 如果您想检查一下,刚刚添加了另一个解决方案 谢谢,很有用。我可能会将它用于其他一些字符串选择需求。

以上是关于在 Pandas 系列中选择字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章

python拾遗系列:pandas read_csv方法如何读取字符串变量

在包含字符串列表的系列上使用 Pandas 字符串方法“包含”

Pandas Dataframe 错误'StringArray 需要一系列字符串或 pandas.NA'

用一个值替换 Pandas 系列中的多个子字符串

如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?

Pandas 系列字符串比较