我有一个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
答案 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