我有一个Pandas系列,其中包含一个Index列和第二列,0。
索引列包含几种语言缩写。此索引列中的两个不同值是“en”代表“英语”,“en-gb”代表“英国英语”。此列中还有许多其他值,包括“es”表示“西班牙语”,“fr”表示“法语”,等等。
所以系列看起来像这样:
Index 0
en 42000
en-gb 500
es 320
und 143
fr 50
列0包含原始数据框中索引列中每个语言值出现次数的值。
我要做的是将两个值组合为“en”和“en-gb”,以便将它们计为一个。
我想要一个看起来像这样的新系列:
Index 0
en 42500
es 320
und 143
fr 50
编辑:建议告诉我修改原始DataFrame。这个建议的问题在于我没有传统的数据帧作为我的Pandas系列的来源。
相反,我的Pandas系列的起源是一个字典列表,在这些字典中,其中一个键是另一个字典。
所以要明确我有:成千上万的词典列表。
每个词典的一个关键词是“用户”。
“user”键的值是另一个字典。
在第二个字典中有一个键“lang”和值“en”,“en-gb”,“es”,“fr”等等。
在视觉上,我猜我原始数据的样本如下所示:
list_of_things = [
{'id':4444, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'},
{'id':555, 'user': {'lang':'fr', 'gibberish':'*#(#($&'}, 'location':'France'},
{'id':666, 'user': {'lang':'en-gb', 'gibberish':'*#(#($&'}, 'location':'Great Britain'},
{'id':777, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'},
{'id':888, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, {'id':999, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'},
{'id':888, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, {'id':999, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'},
{'id':888, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, {'id':999, 'user': {'lang':'es', 'gibberish':'*#(#($&'}, 'location':'Spain'},
{'id':888, 'user': {'lang':'en-gb', 'gibberish':'*#(#($&'}, 'location':'Great Britain'}, {'id':999, 'user': {'lang':'und', 'gibberish':'*#(#($&'}, 'location':'Unknown'},
]
答案 0 :(得分:0)
尝试
df.groupby(df['Index'].str[:2])['0'].sum()
或
df.groupby(df['Index'].str.split('-').str[0])['0'].sum()
你得到了
Index
en 42500
es 320
fr 50
un 143