使用特定列将新列映射到 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
}
]
我有一个数据框:
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
}
]