获取pandas DataFrame每列的唯一值 - 以帮助我创建更小、更易管理的DataFrame以进行指标分析

2 投票
1 回答
7108 浏览
提问于 2025-04-17 21:53

我开始的时候想把一个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

撰写回答