1 回答
TA贡献1856条经验 获得超5个赞
pandas.DataFrame.groupby
在所需的列上使用。pandas.DataFrame.agg
对不同的列使用不同的函数我知道该列需要是测试结果,索引需要是其他协变量,但我不能将多个索引作为不同的变量。
pandas.DataFrame.reset_index
在特定级别删除多索引。
问题中提供的示例数据不容易像发布的那样重现,因此已为此答案提供了可重现的数据集。
import pandas as pd
import numpy as np
import random
# sample data
np.random.seed(365)
random.seed(365)
data = {'a': [np.random.randint(10) for _ in range(25)],
'groups': [random.choice(['1-5', '6-25', '26-100', '100-500', '500-1000', '>1000']) for _ in range(25)],
'treatment': [random.choice(['Yes', 'No']) for _ in range(25)],
'date': pd.bdate_range(datetime.today(), freq='d', periods=25).tolist()}
df = pd.DataFrame(data)
# display(df.head())
a groups treatment date
2 >1000 Yes 2020-07-20
4 26-100 Yes 2020-07-21
1 >1000 Yes 2020-07-22
5 6-25 No 2020-07-23
2 26-100 Yes 2020-07-24
# groupby and aggregate different features of different columns
df.groupby(['groups', 'treatment']).agg({'a': 'mean', 'groups': 'count'}).reset_index(level='treatment')
treatment a groups
groups
1-5 No 5.000000 3
1-5 Yes 7.000000 1
100-500 No 5.500000 2
100-500 Yes 3.000000 2
26-100 No 9.000000 1
26-100 Yes 2.666667 3
500-1000 No 2.666667 3
500-1000 Yes 7.500000 2
6-25 No 5.500000 2
6-25 Yes 5.333333 3
>1000 Yes 2.000000 3
添加回答
举报