簡體   English   中英

如何使用熊貓計算數據框中的單詞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM