Python数据框列字符串提取有效方式?

时间:2015-06-02 18:20:13

标签: python pandas pattern-matching dataframe

我有一个带有列ID的数据框df,格式如下。我想要的是返回带有破折号后面的数字的字符串列。对于下面的例子,我需要01,01,02。我使用下面的命令,但失败了。由于它是一个非常大的数据帧,我认为进行循环和逐行提取可能效率低下。请指教,谢谢

df [' ID']。apply(lambda x:x.split(' - ')[1],轴= 1)

错误:()得到了一个意外的关键字参数'轴'

DP00010-01
DP00020-01
..........
DP00010-02

更新:Edchum的解决方案

df['ID'].str.split('-').str[1] 

适合我

1 个答案:

答案 0 :(得分:2)

如果你有最新版本的pandas,请使用vectorised str方法split

In [26]:
df['val'].str.split('-').str[1]
Out[26]:
0    01
1    01
2    02
dtype: object

如果短划线位置已修复,则可以将其切片

In [28]:    
df['val'].str[8:]
Out[28]:
0    01
1    01
2    02
Name: val, dtype: object

至于你的方法失败的原因,你在系列上调用applydf['ID']是系列而不是df)并且没有axis参数,所以以下工作:

In [29]:
df['val'].apply(lambda x: x.split('-')[1])

Out[29]:
0    01
1    01
2    02
Name: val, dtype: object