【发布时间】:2021-09-23 14:56:22
【问题描述】:
假设我有一个数据框 df,它有两个索引级别,如下所示:
col 1 col 2
A 1 1 5
2 2 3
B 1 2 4
2 1 4
现在我想通过some_function 为每个级别 0 索引的每一列计算一个值。所以对于每一组:
groups = df.groupby(level = 0)
不幸的是,我的some_function 在我的情况下只接受一维数据。我找到了一种方法来做到这一点,但我对我的解决方案并不满意,因为我不知道如何将它应用于大数据帧,而且感觉很多余。
df_new=groups.aggregate({"col 1":some_function,"col 2":some_function"})
有没有更好的方法来获得相同的结果?
【问题讨论】:
-
试试
apply:groups.apply(lambda g: g.apply(some_function)) -
我认为
groups.agg(some_function)应该适用于每列 -
小技巧。如果您不确定传递给您的函数的内容,请使用
print进行测试。例如df.agg(print)将逐列打印列,这确认传递的数据是一维(系列)。
标签: python pandas group-by multi-index