1 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以簡(jiǎn)單地重命名列:
import numpy as np
import pandas as pd
np.random.seed(2018)
df = pd.DataFrame(np.random.randint(10, size=(100, 3)), columns=['A','B','C'])
result = df.groupby('A').agg({'B': [('D','count'),('E','nunique')],
'C': [('F','first'),('G','max')]})
result.columns = result.columns.get_level_values(1)
print(result)
或者,您可以保存groupby對(duì)象,并用于grouped[col].agg(...) 生成子數(shù)據(jù)幀,然后可以將其pd.concat組合在一起:
import numpy as np
import pandas as pd
np.random.seed(2018)
df = pd.DataFrame(np.random.randint(10, size=(100, 3)), columns=['A','B','C'])
grouped = df.groupby('A')
result = pd.concat([grouped['B'].agg([('D','count'),('E','nunique')]),
grouped['C'].agg([('F','first'),('G','max')])], axis=1)
print(result)
兩個(gè)代碼片段都產(chǎn)生以下結(jié)果(盡管列的順序可能不同):
D E F G
A
0 18 8 8 9
1 12 8 6 6
2 14 8 0 8
3 10 9 8 9
4 7 6 3 5
5 8 5 6 7
6 9 7 9 9
7 8 6 4 7
8 8 7 2 9
9 6 5 7 9
總的來說,我認(rèn)為事后重命名列是最簡(jiǎn)單、更易讀的選擇。
添加回答
舉報(bào)