2 回答
TA贡献1780条经验 获得超3个赞
您可以使用列表理解和解包作为:
df['col3'] = [{**d, k:v} for k,v,d in df.values.tolist()]
print(df)
col1 col2 col3
0 A 12 {'key1': 'val1', 'A': 12}
1 A 13 {'key2': 'val2', 'A': 13}
2 B 14 {'key3': 'val3', 'B': 14}
3 C 15 {'key4': 'val4', 'C': 15}
输入数据 -
df = pd.DataFrame({'col1':['A','A','B','C'],
'col2':[12,13,14,15],
'col3':[{"key1":"val1"},{"key2":"val2"},
{"key3":"val3"},{"key4":"val4"}]})
TA贡献2021条经验 获得超8个赞
您可以结合使用 apply 和 lambda 函数来执行此操作。它是这样的:
df.apply(lambda row: row.column3.update({row.column1: row.column2}), axis=1)
所以输出将是:
column1 column2 column3
0 A 12 {'key1': 'val1', 'A': 12}
1 A 13 {'key2': 'val2', 'A': 13}
2 B 14 {'key3': 'val3', 'B': 14}
3 C 15 {'key4': 'val4', 'C': 15}
添加回答
举报