亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將熊貓數據框轉換為嵌套的 json

將熊貓數據框轉換為嵌套的 json

鴻蒙傳說 2023-02-07 16:33:55
我有一個如下所示的數據框,其中一列包含已經嵌套的字典列表:import pandas as pddata = {'First':  ['First value', 'Second value'],    'Second': ['First value', 'Second value'],    'third': ['First value', 'Second value'],    'forth': ['[{"values": "","entity": "datetime","","Turn":  [{"expression": "","tid": "","type": "", "value": "","mod": "","anchor": "","beginPoint": "","endPoint": ""}]}]','[{"values": "","entity": "datetime","Turn": [{"expression": "","tid": "","type": "", "value": "","mod": "","anchor": "","beginPoint": "","endPoint": ""}]}]'],    }df = pd.DataFrame (data, columns = ['First','second','third','forth'])我想將其轉換為以下 json 格式并保存為:[  {    "first": "",    "second": "",    "third": "",    "forth": [        {          "values": "",          "entity": "",          "TIMEX3": [            {              "expression": "",              "tid": "",              "type": "",              "value": "",              "mod": "",              "anchorTimeID": "",              "beginPoint": "",              "endPoint": ""                    }                  ]                }              ]            },...我試過以下,但輸出太亂,看起來不像我想保存的輸出  my_json = (df.groupby(['text','intent','domain'], as_index=False)               .apply(lambda x: x[['entities']].to_dict('r'))               .reset_index()               .to_json(orient='records',indent= 2))
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

我相信,您離想要的格式不遠了。唯一的問題是列forth包含字典作為字符串。一種可能的方法是將所有內容轉換回字典,使用 eval 將字符串轉換回字典,并使用 json 解析器很好地打印它:


import pandas as pd

import json


data = {'First':  ['First value', 'Second value'],

    'Second': ['First value', 'Second value'],

    'third': ['First value', 'Second value'],

    'forth': ['[{"values": "","entity": "datetime","Turn":  [{"expression": "","tid": "","type": "", "value": "","mod": "","anchor": "","beginPoint": "","endPoint": ""}]}]','[{"values": "","entity": "datetime","Turn": [{"expression": "","tid": "","type": "", "value": "","mod": "","anchor": "","beginPoint": "","endPoint": ""}]}]'],

    }

df = pd.DataFrame (data, columns = ['First','Second','third','forth'])


my_dict = df.to_dict(orient='records')

for row in my_dict:

    row['forth'] = eval(row['forth'])

my_json = json.dumps(my_dict, indent=2)

print(my_json)

有兩個小的更正,密鑰大寫Second和無效條目:, "", 在您的forth密鑰中。


這是我的輸出的副本:


[

  {

    "First": "First value",

    "Second": "First value",

    "third": "First value",

    "forth": [

      {

        "values": "",

        "entity": "datetime",

        "Turn": [

          {

            "expression": "",

            "tid": "",

            "type": "",

            "value": "",

            "mod": "",

            "anchor": "",

            "beginPoint": "",

            "endPoint": ""

          }

        ]

      }

    ]

  },  ...

如果列forth已經是數據框中的字典,您可以to_json直接調用,格式將是您想要的。例如,您可以嘗試將更正后的數據轉換回my_dict數據幀:


test_df = pd.DataFrame(my_dict)

print(test_df.to_json(orient='records', indent=2))


查看完整回答
反對 回復 2023-02-07
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號