首页 > 解决方案 > 由 groupby 产生的 pandas 数据框中的列名

问题描述

我有以下代码:

import pandas as pd
import numpy as np
df = pd.DataFrame({'clif_cod' : [1,2,3,3,4,4,4],
               'peds_val_fat' : [10.2, 15.2, 30.9, 14.8, 10.99, 39.9, 54.9],
               'mes' : [1,2,4,5,5,6,12],
               'ano' : [2016, 2016, 2016, 2016, 2016, 2016, 2016]})

vetor_valores = df.groupby(['mes','clif_cod']).sum()

这产生了这个输出:

               ano         peds_val_fat
mes clif_cod                    
1   1         2016         10.20
2   2         2016         15.20
4   3         2016         30.90
5   3         2016         14.80
    4         2016         10.99
6   4         2016         39.90
12  4         2016         54.90

如何根据 mes 和 clif_cod 选择行?

当我做 list(df) 时,我只得到 ano 和 peds_val_fat。

标签: pythonpandas

解决方案


IIUC,您可以将参数传递as_index=False给您的 groupby。然后,您可以像访问任何其他数据框一样访问它

vetor_valores = df.groupby(['mes','clif_cod'], as_index=False).sum()

>>> vetor_valores
   mes  clif_cod   ano  peds_val_fat
0    1         1  2016         10.20
1    2         2  2016         15.20
2    4         3  2016         30.90
3    5         3  2016         14.80
4    5         4  2016         10.99
5    6         4  2016         39.90
6   12         4  2016         54.90

要访问值,您现在可以使用ilocloc像任何数据框一样使用:

# Select first row:
vetor_valores.iloc[0]
...

或者,如果您已经创建了 groupby 并且不想返回并重新创建它,您可以重置索引,结果是相同的。

vetor_valores.reset_index()

推荐阅读