我有以下數據結構: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)

慕村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)
添加回答
舉報
0/150
提交
取消