Python 将数据帧的两列作为键值对合并到已存在的字典列中

Python 将数据帧的两列作为键值对合并到已存在的字典列中,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,如果一个数据帧有3列,如下所示: column1 : ['A','A','B','C'] column2 : [12,13,14,15] column3 : [{"key1":"val1"},{"key2":"val2"},{"key3":"val3"},{"key4":"val4"}] 我希望第3列是这样的: column3 : [{

如果一个数据帧有3列,如下所示:

column1 : ['A','A','B','C']
column2 : [12,13,14,15]
column3 : [{"key1":"val1"},{"key2":"val2"},{"key3":"val3"},{"key4":"val4"}]
我希望第3列是这样的:

column3 : [{"key1":"val1", "A":12},{"key2":"val2", "A":13},{"key3":"val3", "B":14},{"key4":"val4", "C":15}]

我尝试过使用lambda函数和apply来迭代行,但都没有成功。

您可以使用列表理解和解包,如下所示:

df['col3'] = [{**d, k:v} for k,v,d in df.values.tolist()]


输入数据-

df = pd.DataFrame({'col1':['A','A','B','C'], 
                   'col2':[12,13,14,15],
                   'col3':[{"key1":"val1"},{"key2":"val2"},
                           {"key3":"val3"},{"key4":"val4"}]})

您可以使用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}
  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}