熊猫groupby-apply缺少列

时间:2019-09-03 14:37:21

标签: python pandas pandas-groupby

我有一个DataFrame,我想执行“ groupby-apply”样式的操作,但是,该操作后缺少“关键”列:

df = pd.DataFrame({
'col1':['A1', 'A2', 'A3'],
'col2':['B1', 'B1', 'B2'],
'col3':[1, 2, 3,]
})  
b1 = df.groupby(['col1', 'col2'], as_index=False)[['col3']].apply(lambda x: x+10)
b2 = df.groupby(['col1', 'col2'], as_index=False)['col3'].apply(lambda x: x+10)
print(b1)
print(b2)

b1将打印为:

col3
0   11
1   12
2   13  

b2将打印为:

b
0  0    11
1  1    12
2  2    13
Name: col3, dtype: int64

我如何使用组键列([''col1','col2']也可以打印为

col1  col2
A1    B1      11
A2    B1      12
A3    B2      13

1 个答案:

答案 0 :(得分:1)

当您打印每个groupby object的类型时,您会看到Series,它前面有索引。 Github打开issue

df.groupby(['col1', 'col2'], as_index=False)['col3'].apply(lambda x: type(x) )
Out[11]: 
col1  col2
A1    B1      <class 'pandas.core.series.Series'>
A2    B1      <class 'pandas.core.series.Series'>
A3    B2      <class 'pandas.core.series.Series'>
dtype: object

要获得预期的输出

df.groupby(['col1', 'col2']).apply(lambda x: x['col3']+10).reset_index(level=-1,drop=True)
Out[32]: 
col1  col2
A1    B1      11
A2    B1      12
A3    B2      13
Name: col3, dtype: int64