【问题标题】:How to merge/combine the value of two rows within a Series when the two rows' values are different?当两行的值不同时,如何合并/组合系列中两行的值?
【发布时间】:2018-04-06 23:17:39
【问题描述】:

我有一个 Pandas 系列,其中包含一个索引列和第二列 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 系列的起源是一个字典列表,在这些字典中,其中一个键是另一个字典。

所以要清楚,我有:数千个字典的列表。

每个字典的键之一是“用户”。

“用户”键的值是另一个字典。

在第二个字典中有一个键“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'},
]

【问题讨论】:

  • 你想分别保留两个es 吗?
  • 啊,抱歉,这是我在这里创建表时犯的一个错误——我已经只有一个 es 实例。

标签: python pandas slice series


【解决方案1】:

试试

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

【讨论】:

  • @Wen,嗯,虽然没有多大意义
  • 啊,抱歉,这是我在这里创建表时犯的一个错误——我已经只有一个 es 实例。
  • 哈哈,他改了:-)
  • 我更新了我的问题以反映我无法使用这种方法修改我的数据(因为我没有传统的 DataFrame 作为我的数据源)。
猜你喜欢
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 2023-01-28
  • 2022-01-11
  • 2023-02-05
相关资源
最近更新 更多