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:]))
但我不知道如何将条件应用到我的数据框中。
添加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)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |