将数据框的两列作为键值对合并到现有的字典列中

如果我们有 3 列数据框:


column1 : ['A','A','B','C']

column2 : [12,13,14,15]

column3 : [{"key1":"val1"},{"key2":"val2"},{"key3":"val3"},{"key4":"val4"}]

我希望 column3 是这样的:


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

我尝试了一些使用 lambda 函数和 apply 来迭代行的方法,但都没有成功。


暮色呼如
浏览 90回答 2
2回答

Helenr

您可以使用列表理解和解包作为:df['col3'] = [{**d, k:v} for k,v,d in df.values.tolist()]print(df)  col1  col2                       col30    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"}]})

宝慕林4294392

您可以结合使用 apply 和 lambda 函数来执行此操作。它是这样的:df.apply(lambda row: row.column3.update({row.column1: row.column2}), axis=1)所以输出将是:  column1  column2                    column30       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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python