如何根据字典中的键/值增加 Python Pandas DataFrame

Posted

技术标签:

【中文标题】如何根据字典中的键/值增加 Python Pandas DataFrame【英文标题】:How to increment Python Pandas DataFrame based on key/values from a dictionary 【发布时间】:2015-12-09 17:46:54 【问题描述】:

有一个字典列表,例如:

['item_id':'string1','feature1': 1, 'feature2': 0, 'feature3':2,
 'item_id':'string2','feature1': 0, 'feature2': 1, 'feature3':0,
 'item_id':'string3','feature1': 2, 'feature2': 0, 'feature3':1,
 'item_id':'string1','feature1': 1, 'feature2': 0, 'feature3':2]

我想构建和更新一个 DataFrame,其中一个列捕获 item_id,而其余的列应该被启动并增量更新它们的值,以防检测到 item_id(此处为“string1”)的重复。

以下内容:

import pandas as pd

list_of_dictionaries = ['item_id':'string1','feature1': 1, 'feature2': 0, 'feature3':2,
     'item_id':'string2','feature1': 0, 'feature2': 1, 'feature3':0,
     'item_id':'string3','feature1': 2, 'feature2': 0, 'feature3':1,
     'item_id':'string1','feature1': 1, 'feature2': 0, 'feature3':2]


header = ['item_id','feature1','feature2','feature3']
df = pd.DataFrame(columns=header)

for d in list_of_dictionaries:
    df = pd.DataFrame.from_dict([d])

显然只初始化DataFrame。

理想情况下,我想总结出现超过 1 次的“item_id”的所有特征值。对于示例输入“list_of_dictionaries”,这将是:

   item_id  feature1  feature2  feature3
0  string1         2         0         4
1  string2         0         1         0
2  string3         2         0         1

【问题讨论】:

【参考方案1】:

你可以使用DataFrame.groupby():

In [47]: df = pd.DataFrame.from_dict(list_of_dictionaries)

In [48]: df.groupby('item_id').sum()
Out[48]:
         feature1  feature2  feature3
item_id
string1         2         0         4
string2         0         1         0
string3         2         0         1

【讨论】:

谢谢。我用更多关于预期输出的具体信息扩展了最初的帖子。

以上是关于如何根据字典中的键/值增加 Python Pandas DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

Java中的Hashtable如何根据值获取键?

Python字典如何根据值返回键

Python字典如何根据值返回键

python 中关于字典的键

如何根据字典中的键值逐行向熊猫数据框添加值?

Python列表元素为字典时,如何根据其中某个相同的键值进行元素合并