拆分一列字符串并用pandas计算单词数

问题描述 投票:3回答:1
id   string   
0    31672;0           
1    31965;0
2    0;78464
3      51462
4    31931;0

嗨,我有那张桌子。我想用';'拆分字符串表,并将其存储到新列。最后一栏应该是这样的

 id   string   word_count
0    31672;0    2       
1    31965;0    2
2    0;78464    2
3      51462    1
4    31931;0    2

如果有人知道如何用python做它会很好。

python string pandas dataframe
1个回答
2
投票

选项1 使用str.split + str.len的基本解决方案 -

df['word_count'] = df['string'].str.split(';').str.len()
df

     string  word_count
id                     
0   31672;0           2
1   31965;0           2
2   0;78464           2
3     51462           1
4   31931;0           2

选项2 使用str.count的聪明(高效,耗费空间更少)解决方案 -

df['word_count'] = df['string'].str.count(';') + 1
df

     string  word_count
id                     
0   31672;0           2
1   31965;0           2
2   0;78464           2
3     51462           1
4   31931;0           2

警告 - 即使是空字符串,这也会将字数归为1(在这种情况下,坚持使用选项1)。


如果您希望每个单词占用一个新列,可以使用tolist快速简单地将分割加载到新数据帧中,并使用concat将新数据帧与原始数据连接起来 -

v = pd.DataFrame(df['string'].str.split(';').tolist())\
        .rename(columns=lambda x: x + 1)\
        .add_prefix('string_')

pd.concat([df, v], 1)

     string  word_count string_1 string_2
id                                       
0   31672;0           2    31672        0
1   31965;0           2    31965        0
2   0;78464           2        0    78464
3     51462           1    51462     None
4   31931;0           2    31931        0
© www.soinside.com 2019 - 2024. All rights reserved.