我有一个整数列表,其中索引表示熊猫数据帧的列号。我想保存数据框列的名称和列表索引的值,所以我考虑使用字典,以列表值作为键,以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块。 有人可以帮忙吗?
答案 0 :(得分:0)
我仍然不太了解您要做什么。但这可能会使您的生活更轻松。tempList = your_Df.columns.values
将在保留顺序的同时返回数据框的列名称列表。因此,如果您有一个带有列a d g b c f
的数据框,则会得到以下列表:['a' 'd' 'g' 'b' 'c' 'f']
。
这至少应该帮助您在保留正确索引的同时迭代列名。