熊猫-将列名称添加到groupby的结果中

时间:2018-07-03 23:24:21

标签: python pandas dataframe pandas-groupby

我想在Python 3.6的DataFrame上将列名添加到groupby的结果中。

我尝试了以下代码:

import pandas as pd
d = {'timeIndex': [1, 1, 1, 1, 2, 2, 2], 'isZero': [0,0,0,1,0,0,0]}
df = pd.DataFrame(data=d)
df2 = df.groupby(['timeIndex'])['isZero'].sum()
print(df2)

结果

timeIndex
1    1
2    0
Name: isZero, dtype: int64

看起来timeIndex是列标题,但是尝试按名称寻址列会产生异常。

df2['timeIndex']
# KeyError: 'timeIndex'

df2['isZero']
# KeyError: 'isZero'

我正在寻找这个结果。

df2 

     timeIndex    isZero
0    1    1
1    2    0

df2['isZero']

0    1
1    0

1 个答案:

答案 0 :(得分:3)

方法1:

在您的as_index = False中使用参数groupby

df2 = df.groupby(['timeIndex'], as_index=False)['isZero'].sum()

>>> df2
   timeIndex  isZero
0          1       1
1          2       0

>>> df2['isZero']
0    1
1    0
Name: isZero, dtype: int64

方法2:

您可以使用to_frame和所需的列名,然后使用reset_index

df2 = df.groupby(['timeIndex'])['isZero'].sum().to_frame('isZero').reset_index()

>>> df2
   timeIndex  isZero
0          1       1
1          2       0

>>> df2['isZero']
0    1
1    0
Name: isZero, dtype: int64