在 Python Pandas 的数据帧上使用字符串方法?

Posted

技术标签:

【中文标题】在 Python Pandas 的数据帧上使用字符串方法?【英文标题】:Using string methods on dataframes in Python Pandas? 【发布时间】:2015-04-23 15:17:41 【问题描述】:

我有一个具有以下字符串格式的数据框。

data.description[4000]=['Conduit, PVC Utility Type DB 60 TC-6, 1-1/2"                                   LF   .050   $.86   $1.90   $2.76']

字符串的大小不同,但我想在“LF”子字符串处拆分字符串。 所需的输出将是

data2=['Conduit, PVC Utility Type DB 60 TC-6,1 -1/2"','LF',.050,'$.86','$1.90','$2.76]

如果我有一个单位列表

units=['CLF','LF','EA']

如何搜索数据框字符串并以上述格式分解字符串?似乎用单位分隔符拆分会有点用,但我会丢失单位。这给了我 2 个可以进一步拆分的字符串,但它似乎需要逐行函数。

有没有更好的方法来做到这一点?

【问题讨论】:

您可以查看此问题及其答案以查看如何逐行应用函数:***.com/questions/25292838/… 否则,为了完全回答问题,即能够拥有所有需要的字段,我们需要确切地知道数据中的内容(不仅仅是一行)。例如,您能否拆分“两个空格或更多”(如果有缺失值,通常不会)...或者列在每一行的字符串中是否具有相同的位置等。 【参考方案1】:

可以直接在有文字的列上使用字符串方法split

df['text'].str.split('(CLF|LF|EA)')

您可以使用捕获括号来保留分隔符

例子:

units ='(CLF|LF|EA)'
df =pd.DataFrame('text':['aaaaaaa LF bbbbbbbb','123456 CLF 78910','!!!!!!!! EA @@@@@@@@@@'])
df.text.str.split(units)

返回:

0       [aaaaaaa , LF,  bbbbbbbb]
1          [123456 , CLF,  78910]
2    [!!!!!!!! , EA,  @@@@@@@@@@]
Name: text, dtype: object

【讨论】:

以上是关于在 Python Pandas 的数据帧上使用字符串方法?的主要内容,如果未能解决你的问题,请参考以下文章

许多数据帧上的高效 Python Pandas 股票 Beta 计算

基于条件更改行值的 Python for 循环可以正常工作,但不会更改 pandas 数据帧上的值?

在 pandas 数据帧上应用 Pyspark 管道

ValueError:在 Pandas 数据帧上使用 itertuples() 时解包的值太多

嵌套 for 循环的 Pandas 在创建的不同数据帧上插入多个数据

在 pandas 数据帧上并行调用函数