【问题标题】:Python create dictionary with key and list of valuesPython使用键和值列表创建字典
【发布时间】:2018-08-13 11:26:08
【问题描述】:

我有一个整数列表,其中索引表示熊猫数据框的列号。我想保存数据框列的名称和列表索引的值,所以我想使用一个字典,其中列表值作为键,dataframe.loc[list_index] 作为值。
一个键有多个值,所以我举一个整数列表的例子:

[0,2,1,5,0,9,6,3]  

所以我想要一个这样的字典:

0: [column1, another column]
1: [column3,...]
....

这是我的第一种方法:

article_nos= {}
for idx, val in enumerate(labels):
    try:
        article_nos[val].append(data_pct_change.loc[:, idx].name)
    except KeyError:
        article_nos[val] = [val]

数据:
data_pct_change:

ARTICLE_NO     43470868       40370875       43770899       48870943       \
DATE                                                                     
2017-01-02       0.000000       0.000000       0.000000       0.000000   
2017-01-09      -0.015625      -0.074928      -0.083333       0.230769   
2017-01-16       0.232804       0.007788       0.284091       0.062500   
2017-01-23       0.051502       0.174652       0.011799       0.117647   
2017-01-30       0.200000      -0.082895       0.008746       0.807018   
2017-02-06       0.057823       0.040172      -0.020231      -0.411003   
2017-02-13       0.000000      -0.037241      -0.014749      -0.087912   
2017-02-20       0.125402       0.259312       0.218563       0.138554   
2017-02-27      -0.265714      -0.271900      -0.233415      -0.343915   
2017-03-06       0.470817       0.293750       0.448718       0.661290   
2017-03-13       0.002646       0.013285      -0.057522      -0.048544   

标签:

[27, 5, 5, 6, 27, 27, 27, 27,...]

期望的输出:

27: [43470868,...]
5: [40370875, 43770899, ...]

这应该澄清我试图实现的目标。

所以我想使用包含 kmeans 算法标签的列表的索引,并创建一个包含所有创建的标签和属于特定列的数据框的列名的字典,所以值是我的键和 data_pct_change .loc[:, idx] 应该是我的值并在每次迭代中附加。 但是,这不起作用,只执行了 except 块。 有人可以帮忙吗?

【问题讨论】:

  • 您提供的代码和数据无助于理解您到底想要实现什么。可以发一下MCVE吗? (labelsdata_pct_change 的值和预期的结果是必要的)。
  • 我想通过索引访问数据框 (data_pct_change) 的列,该索引等于标签中数字的索引。此指定索引的值应用作要创建的字典中的键,因此我从标签中获取与某个值匹配的 data_pct_change 的所有列,作为其特定键的值列表
  • 请阅读MCVE 是什么并编辑您的问题以符合要求。否则不清楚,没有人可以帮助你。

标签: python-3.x pandas


【解决方案1】:

我还是不完全明白你的目的。但这里有一些东西可能会让你的生活更轻松。tempList = your_Df.columns.values 这将返回你的数据框的列名列表,同时保持顺序。因此,如果您有一个包含 a d g b c f 列的数据框,您将获得此列表:['a' 'd' 'g' 'b' 'c' 'f']

这至少应该可以帮助您在保留正确索引的同时遍历列名。

【讨论】:

  • 谢谢,这正是我要找的。现在我可以以所需的方式连接我的两个列表
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2015-01-17
  • 2023-01-14
  • 2018-01-14
  • 2019-12-27
  • 2022-10-14
  • 2016-01-08
相关资源
最近更新 更多