我将按dataframe的一个列对其进行分组,如下所示(例如iris
dataset):
grouped_iris = iris.groupby(by="Name")
我想为每个组应用一个函数,它对grouped_iris
中的列子集执行特定的操作。我如何应用一个函数来为每个组(每个Name
)求和PetalLength
和{SumLengthWidth
的新列中?我知道我可以用agg
对每个组的所有列求和,如下所示:
但我要找的是一个转折点:我不想对每个列的某个特定Name
的所有条目求和,而只想对每个Name
组的列(SepalWidth, SepalLength
)的一个子集求和。谢谢。在
无法判断您是否需要聚合数(在这种情况下,Andy的解决方案就是您想要的),还是希望将其转换回原始数据帧。如果是后者,可以使用
transform
编辑:一般案例示例
通常,对于一个数据帧
^{pr2}$df
,用sum
聚合groupby将得到每个组的总和在您的例子中,您有兴趣对这些行进行汇总:
但这只给你2个数字,每组1个。一般来说,如果您希望将这两个数字投影回原始数据帧上,则需要使用
transform
:请注意,这些值是如何与
agg
,生成的值完全相同,但是的维度与原始的df
相同。还要注意每隔一个值是如何重复的,因为行[0,2,4]和[1,3,5]是相同的组。在您的例子中,您需要这两个值的和,所以您需要跨行求和。在现在有了一个与原始数据帧长度相同的序列,因此可以将其重新指定为列(或对其执行您喜欢的操作):
这看起来有点不雅观,但它的作用是:
相关问题 更多 >
编程相关推荐