python - 使用 Pandas 按键获取组名的最快方法是什么?

标签 python pandas pandas-groupby

我尽可能多地检查了一下。

如果我在 pandas 中使用 groupby,并且我有一个组,将其命名为 group1,我如何获取组 1 的名称?

我正在使用 groupbyapply,所以我没有明确地拉组,这就是我需要这样做的原因。

假设 df 由两个事物组成。

df.groupby(['key1','key2'])

然后我得到一个使用这个的组:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.get_group.html#pandas.core.groupby.GroupBy.get_group

我想避免做:

group1.key1.unique()[0]
group1.key2.unique()[0]

获取名称,因为那很慢..

最佳答案

我不清楚你所说的组名是什么意思。您是指分组依据的列中的值吗?

Apply 将按 groupby 列将数据框分成多个较小的数据框。您分组的列仍在较小的数据框中。那是你追求的吗?

举例说明:

示例数据:

np.random.seed(1)
n=10
df = pd.DataFrame({'mygroups' : np.random.choice(['dogs','cats','cows','chickens'], size=n), 
                   'mygroups2' : np.random.choice(['dogs','cats','cows','chickens'], size=n),
                   'data' : np.random.randint(1000, size=n)})
print df.head()
   data  mygroups mygroups2
0   254      cats      dogs
1   357  chickens      cats
2   914      dogs      dogs
3   468      dogs  chickens
4   907  chickens      cats

让我们将它分组并组成一个愚蠢的函数:

gb = df.groupby(['mygroups','mygroups2'])
def someFunction(ingroup):
    print ingroup
    return ""

gb.apply(someFunction)


   data mygroups mygroups2
7   668     cats      cats
   data mygroups mygroups2
7   668     cats      cats
   data mygroups mygroups2
0   254     cats      dogs
5   252     cats      dogs
   data  mygroups mygroups2
1   357  chickens      cats
4   907  chickens      cats
   data  mygroups mygroups2
6   490  chickens      cows
8   925  chickens      cows
   data mygroups mygroups2
3   468     dogs  chickens
   data mygroups mygroups2
2   914     dogs      dogs
9   398     dogs      dogs
Out[718]:
mygroups  mygroups2
cats      cats         
          dogs         
chickens  cats         
          cows         
dogs      chickens     
          dogs         
dtype: object

因此您可以在生成的打印输出中看到 apply 的每次迭代都会获取输入数据帧的所有列。

编辑:

我不确定如何从 apply 中获取键元组,但我可以从循环中获取:

for eachgroup in gb:
    print 'this group key = ' + str( eachgroup[0] )
    print 'this group values = ' 
    print eachgroup[1] 

关于python - 使用 Pandas 按键获取组名的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003175/

相关文章:

python - 带美元符号的 Pandas 数据框金额值

python - 检查列中包含列表 pandas 数据框中的项目数

Python - 直接从硬盘读取

python - 删除水平下划线

python - SQL炼金术 : column name prefixed on the subquery of union_all of 3 tables

python - 在 Pandas 数据框中按组过滤具有最小值的行

python - 从组内的最大值中减去值

python - 根据另一个表中的多个列在一个表中创建一列 [python]

python - 子进程无法使用 Pandas 执行文件

excel - 根据文件中的工作表名称从 pandas 数据框创建 csv 文件