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

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

Pandas 將聚合數組列表變成字典

Pandas 將聚合數組列表變成字典

米琪卡哇伊 2021-07-22 18:00:13
我有以下數據結構:import pandas as pdimport jsondf = pd.DataFrame( {'g1' : ['ABC', 'ABC', 'XYZ', 'XYZ'], 'g2' : ['DEF', 'GHI', 'RST', 'UVW']})print df>>     g1   g20  ABC  DEF1  ABC  GHI2  XYZ  RST3  XYZ  UVW我正在嘗試編寫具有以下結構的 JSON 文件$ cat ABC.json> {    "DEF" : true,     "GHI" : true  }  和$ cat XYZ.json> {    "RST" : true,     "UVW" : true  }  到目前為止,我已經能夠創建聚合print df.groupby(u'g1',as_index=True)[u'g2'].aggregate(lambda x: set(x))>> g1ABC    {GHI, DEF}XYZ    {RST, UVW}并將其轉儲到 JSONdd = json.loads(df.to_json())然后將其寫入單個文件for k,v in dd.iteritems():    with open(k+'json','wb') as fp:        json.dump(v, fp)但是以pandas-y的方式將列表映射到dict仍然讓我感到困惑。我將發布我的 python(非熊貓)答案作為參考
查看完整描述

2 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

你可以這樣做:


import json

import pandas as pd


df = pd.DataFrame({'g1': ['ABC', 'ABC', 'XYZ', 'XYZ'], 'g2': ['DEF', 'GHI', 'RST', 'UVW']})


for name, group in df.groupby('g1'):

    with open('{}.json'.format(name), 'w') as out:

        json.dump(dict.fromkeys(group['g2'].values, True), out)


查看完整回答
反對 回復 2021-07-27
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

解決此問題的非 Pandas(并且不是非常 Pythonic)的方法是首先循環遍歷每個鍵 (k),然后循環遍歷每個數組 (v) 元素,為數組的每個成員創建一個字典 (vd) 條目。它有效,這就是我能說的。


vd = dict()

for k,v in dd.iteritems():

    for x in v:

        vd[x] = True


    with open(k+'json','wb') as fp:

        json.dump(vd, fp)


查看完整回答
反對 回復 2021-07-27
  • 2 回答
  • 0 關注
  • 429 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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