import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,10,size=(10, 3)),
columns=['price', 'created_year', 'price_per_cm'],
index=range(1,11))
>>> df
price created_year price_per_cm artist
1 9 5 4 degas
2 4 0 8 degas
3 2 5 1 renoir
4 0 0 1 picasso
5 9 0 7 renoir
6 5 0 1 degas
7 6 5 8 picasso
8 9 5 3 picasso
9 0 9 7 degas
10 0 5 9 picasso
我想按艺术家分组,并将不同的功能应用于某些列,即mean()
到'price'
和max()
到'created_year'
。这就是我实现这个目标的方式:
s1 = df.groupby(['artist'])['price'].mean()
s2 = df.groupby(['artist'])['created_year'].max()
df2 = pd.concat([s1, s2], axis=1)
price created_year
>>> df2
price created_year
artist
degas 4.50 9
picasso 3.75 5
renoir 5.50 5
是否有更直接的方法来达到这一点,而不是生成两个系列并将它们再次连接到数据帧?