![](/img/trans.png)
[英]How to combine unique words when using pandas groupby-count on a dataframe?
[英]how to count words in a dataframe using 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
我想要的是當單元格中有兩個以上的單詞時刪除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
我已將行編碼為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)
或者:
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
熊貓替代品:
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
使用正則表達式re.Pattern.sub
:
>>> import re
>>> pattern = re.compile(r'^\S+ (?=\S+ )')
>>> pattern.sub('', 'bravo charlie delta echo')
'charlie delta echo'
>>> pattern.sub('', 'alpha')
'alpha'
>>> import re
>>> from functools import partial
>>> df['col2'] = df['col2'].apply(partial(pattern.sub, ''))
>>> df
col1 col2
0 48 bravo charlie
1 52 alpha bravo
2 49 bravo charlie delta echo
3 12 alpha bravo
4 6 alpha
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.