如何根据字典中的键/值增加 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的主要内容,如果未能解决你的问题,请参考以下文章