1

我有一个看起来像这样的熊猫数据框:

ID x1 x2 x3 行动
23432 示例1 1 姓名 创造
678786 示例2 1 姓名 创造

如何将该熊猫数据框转换为这种 json 格式?

[
  {
    "action": "Create",
    "payload": {
      "id": "23432",
      "x1": "example1",
      "x2": "1",
      "x3": "name"    
    }
  },
  {
    "action": "Create",
    "payload": {
      "id": "678786",
      "x1": "example2",
      "x2": "1",
      "x3": "name" 
    }
 }
]

我玩过 pd.json_normalize 但无法让它工作。我也引用了这个问题,但由于需要 groupby,它有点不同。

4

2 回答 2

4

如果您不介意输入列,则一种解决方案可以是:

df['payload'] = df[['id','x1','x2','x3']].to_dict(orient='records')
df_json = df[['action','payload']].to_json(orient='records')
print(df_json)
于 2021-08-29T20:01:34.503 回答
1
import pandas as pd
import json

# intialise data of lists.
data = {'id':['23432', '678786'],
        'x1':['example1', 'example2'],
        'x2':['1', '1'],
        'x3':['name', 'name'],
        'action':['Create', 'Create']}

# Create DataFrame
df = pd.DataFrame(data)

print(json.dumps(df.apply(func=lambda x:{'action':x.action,'payload':x[['id','x1','x2','x3']].to_dict()},axis=1).to_list()))
于 2021-08-29T20:06:12.860 回答