如何使用熊猫计算数据框中的单词?

mar*_*est 3 python python-3.x pandas

假设我有那个数据框df

index      col1      col2
1           48     alpha bravo charlie
2           52     alpha bravo 
3           49     alpha bravo charlie delta echo
4           12     alpha bravo
5           6      alpha
Run Code Online (Sandbox Code Playgroud)

我想要的是col2当单元格中有两个以上的单词时删除第一个单词。

所以它应该是这样的:

index      col1      col2
1           48     bravo charlie
2           52     alpha bravo 
3           49     bravo charlie delta echo
4           12     alpha bravo
5           6      alpha
Run Code Online (Sandbox Code Playgroud)

我已将该行编码为 df['col2'] = df['col2'].apply(lambda x: ' '.join(x.split(' ')[1:]))

但我不知道如何将条件应用到我的数据框中。

jez*_*ael 6

添加if-else带有计数空格的语句:

df['col2'] = df['col2'].apply(lambda x: ' '.join(x.split()[1:]) if x.count(' ') > 1 else x)
Run Code Online (Sandbox Code Playgroud)

或者:

df['col2'] = df['col2'].apply(lambda x: x.split(maxsplit=1)[1] if x.count(' ') > 1 else x)

print (df)
   index  col1                      col2
0      1    48             bravo charlie
1      2    52               alpha bravo
2      3    49  bravo charlie delta echo
3      4    12               alpha bravo
4      5     6                     alpha
Run Code Online (Sandbox Code Playgroud)

熊猫替代品:

df['col2']=df['col2'].mask(df['col2'].str.count(' ') > 1, df['col2'].str.split(n=1).str[1])
print (df)
   index  col1                      col2
0      1    48             bravo charlie
1      2    52               alpha bravo
2      3    49  bravo charlie delta echo
3      4    12               alpha bravo
4      5     6                     alpha
Run Code Online (Sandbox Code Playgroud)