获取pandas DataFrame每列的唯一值 - 以帮助我创建更小、更易管理的DataFrame以进行指标分析
我开始的时候想把一个pandas数据框中的某一列变成一个列表,然后找出这个列表中的唯一值,目的是为了在一个循环中遍历这些唯一值,创建几个小的数据框。也就是说,每个聚类一个小数据框。接着,我想把这些小数据框存储在一个字典里。
@ben建议我开始一个新问题,询问关于pandas数据框的GroupBy方法来完成这个任务?
我最初的帖子在这里: 从pandas数据框列获取列表
My Data:
cluster load_date budget actual fixed_price
A 1/1/2014 1000 4000 Y
A 2/1/2014 12000 10000 Y
A 3/1/2014 36000 2000 Y
B 4/1/2014 15000 10000 N
B 4/1/2014 12000 11500 N
B 4/1/2014 90000 11000 N
C 7/1/2014 22000 18000 N
C 8/1/2014 30000 28960 N
C 9/1/2014 53000 51200 N
例如: for item in cluster_list(其中cluster_list是聚类中唯一值的集合)
create a dataframe for cluster a, where budget > X etc
然后对其他聚类做同样的事情,把它们放进字典里。
之后能够从字典中获取特定的数据框,比如说只获取预算大于X的聚类B的数据框。
GetDf(key):
return dict(key)
提前谢谢你们
1 个回答
4
这个问题分成两个部分。首先,筛选出那些预算小于X的列:
In [11]: df1 = df[df['budget'] > 10000]
In [12]: df1
Out[12]:
cluster load_date budget actual fixed_price
1 A 2/1/2014 12000 10000 Y
2 A 3/1/2014 36000 2000 Y
3 B 4/1/2014 15000 10000 N
4 B 4/1/2014 12000 11500 N
5 B 4/1/2014 90000 11000 N
6 C 7/1/2014 22000 18000 N
7 C 8/1/2014 30000 28960 N
8 C 9/1/2014 53000 51200 N
接下来,你可以按照集群进行分组,得到这些组:
In [13]: g = df1.groupby('cluster')
In [14]: g.get_group('A')
Out[14]:
cluster load_date budget actual fixed_price
1 A 2/1/2014 12000 10000 Y
2 A 3/1/2014 36000 2000 Y
注意:如果你真的想要一个字典的话,你可以使用:
In [15]: d = dict(iter(g))
In [16]: d['A']
Out[16]:
cluster load_date budget actual fixed_price
1 A 2/1/2014 12000 10000 Y
2 A 3/1/2014 36000 2000 Y