【问题标题】:How to convert columns of a Pandas DataFrame into separate dicts where dictnames are the column names?如何将 Pandas DataFrame 的列转换为单独的 dicts,其中 dictnames 是列名?
【发布时间】:2019-10-18 09:20:58
【问题描述】:

我想将 Pandas DataFrame 转换为单独的 dicts,其中 dict 的名称是列名,所有 dics 具有相同的索引。

数据框如下所示:

            cBmsExp  cCncC  cDnsWd  
PlantName                                                 
A.gre          2.5   0.45   896.8  
A.rig          2.5   0.40   974.9  
A.tex          3.5   0.45   863.1    

结果应该是:

cBmsExp = {"A.gre":2.5, "A.rig": 2.5, "A.tex": 3.5}
cCncC   = {"A.gre":0.45, "A.rig": 0.4, "A.tex": 0.45}
cDnsWd  = {"A.gre":898.8, "A.rig": 974.9, "A.tex": 863.1}

我不知道列名如何成为我 Python 代码中变量的名称。

我翻了一堆堆溢出问题和答案,但我没有发现这类问题。

非常感谢您对代码的建议!

【问题讨论】:

  • 这个df.to_json(orient='table')?
  • 我不认为这是解决方案。它仍然提供一种数据结构

标签: python pandas dataframe dictionary


【解决方案1】:

它是not recommended,更好的是创建dicts并按键选择:

d = df.to_dict()
print (d)
{'cBmsExp': {'A.gre': 2.5, 'A.rig': 2.5, 'A.tex': 3.5},
 'cCncC': {'A.gre': 0.45, 'A.rig': 0.4, 'A.tex': 0.45}, 
 'cDnsWd': {'A.gre': 896.8, 'A.rig': 974.9, 'A.tex': 863.1}}

print (d['cBmsExp'])
{'A.gre': 2.5, 'A.rig': 2.5, 'A.tex': 3.5}

但可能,例如globals:

for k, v in d.items():
 globals()[k] =  v

print (cBmsExp)
{'A.gre': 2.5, 'A.rig': 2.5, 'A.tex': 3.5}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-28
    • 2021-06-09
    • 2020-08-06
    • 2019-11-28
    • 2013-02-13
    • 1970-01-01
    • 2015-08-08
    • 2021-11-08
    相关资源
    最近更新 更多