【问题标题】:Pandas make aggregated array list into a dictionaryPandas 将聚合数组列表制作成字典
【发布时间】:2019-03-26 16:50:21
【问题描述】:

我有以下数据结构:

import pandas as pd
import json

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

>>     g1   g2
0  ABC  DEF
1  ABC  GHI
2  XYZ  RST
3  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))

>> g1
ABC    {GHI, DEF}
XYZ    {RST, UVW}

并将其转储为 JSON

dd = 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(非熊猫)答案作为参考

【问题讨论】:

    标签: python arrays pandas dictionary data-structures


    【解决方案1】:

    你可以这样做:

    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)
    

    【讨论】:

      【解决方案2】:

      解决这个问题的一种非熊猫(并且不是非常 Python)的方法是首先循环遍历每个键 (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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-18
        • 2017-09-16
        • 2013-09-11
        • 2019-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        相关资源
        最近更新 更多