我有一个带有列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]
适合我
答案 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
至于你的方法失败的原因,你在系列上调用apply
(df['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