我正在尝试将具有字典的行合并到熊猫数据框中的单行中。输出中应该具有所有键的该列的最新键值
这是输入数据框
df = pd.DataFrame([[{'a': 1, 'c': 2}, {'a': 3, 'b': 4}], [{'a': 5, 'b': 6}, {'a': 7, 'b': 8}]], columns=list('AB'))
A B
0 {'a': 1, 'c': 2} {'a': 3, 'b': 4}
1 {'a': 5, 'b': 6} {'a': 7, 'b': 8}
预期
A B
0 {'a': 5, 'b': 6, 'c': 2} {'a': 7, 'b': 8}
谢谢
答案 0 :(得分:2)
您可以在reduce
理解范围内尝试dict
:
from functools import reduce
d = {c: reduce(lambda x, y: {**x, **y}, df[c]) for c in df}
d = pd.DataFrame([d.values()], columns=d.keys())
print(d)
A B
0 {'a': 5, 'c': 2, 'b': 6} {'a': 7, 'b': 8}
答案 1 :(得分:2)
这将为您提供预期的df:
def consolidate_dicts(input_df):
# Create consolidated dicts
dicts = []
for col in input_df.columns:
dicts.append({k: v for d in input_df[col] for k, v in d.items()})
# Replicate original DataFrame with 1 row
return_df= pd.DataFrame([dicts], columns=input_df.columns)
return return_df
编辑:Shubham Sharma的答案比我的要容易