使用特定列将新列映射到 json

use specific columns to map new column with json

我有一个数据框:

A B C
1 3 6

我想获取 2 列并创建列 D,内容为 {"A":"1", "C":"6}

新数据帧输出为:

A B C D
1 3 6 {"A":"1", "C":"6}

我有以下代码:

df['D'] = n.apply(lambda x: x.to_json(), axis=1)

但这会占用所有列,而我只需要 A 列和 C 列,并且想从创建的 JSON 中保留 B。

如有任何关于仅针对两列的提示,我们将不胜感激。

在 lambda 函数中使用子集:

df['D'] = df.apply(lambda x: x[['A','C']].to_json(), axis=1)

或选择apply之前的列:

df['D'] = df[['A','C']].apply(lambda x: x.to_json(), axis=1)

如果可能创建字典:

df['D'] = df[['A','C']].to_dict(orient='records')
print (df)
    A   B   C                   D
0   1   3   6    {'A': 1, 'C': 6}

这与您的要求不完全相同,但您可以将 2 列转换为字典,然后如果您想以 JSON 格式导出数据,请使用 df['D'].to_json():

df['D'] = df[['A', 'C']].apply(dict, axis=1)
print(df)

# Output
   A  B  C                 D
0  1  3  6  {'A': 1, 'C': 6}

例如,将列 D 导出为 JSON:

print(df['D'].to_json(orient='records', indent=4))

# Output
[
    {
        "A":1,
        "C":6
    }
]