(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
我的示例数据集如下所示:
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