(Python) 转换数据框:如果给定了多个值,则解析行并添加到数据框的相应给定行

(Python) Transform dataframe: parse rows if more than one value is given and add to corresponding given rows of dataframe

我的示例数据集如下所示:

Language Count
Russian 1000
English 1500
Spanish 500
Arabic,Russian, English, Spanish 2
Arabic, English 15

我希望它进行转换,以便结果如下所示:

Language Count
Russian 1002
English 1517
Spanish 502
Arabic 17

所以发生的事情是,我分析了包含不止一种语言的行。将它们添加到已经给出的语言中。如果没有给出(在这种情况下:阿拉伯语)创建新的。

我怎样才能做到这一点?

你可以split, explode, and groupby.sum:

out = (df
   .assign(Language=df['Language'].str.split(',\s*'))
   .explode('Language')
   .groupby('Language', as_index=False, sort=False).sum()
)

输出:

  Language  Count
0  Russian   1002
1  English   1517
2  Spanish    502
3   Arabic     17

使用DataFrame.assign with Series.str.split, DataFrame.explode和最后的总和:

df = (df.assign(Language=df.Language.str.split(','))
        .explode('Language')
        .groupby('Language', as_index=False, sort=False)
        .sum())
print (df)
  Language  Count
0  Russian   1002
1  English   1517
2  Spanish    502
3   Arabic     17