【发布时间】:2021-02-22 19:07:45
【问题描述】:
我有一个熊猫数据框:
pd.DataFrame({
'building': ['house', 'tower', 'house', 'apt', 'apt'],
'material': ['wood', 'metal', 'brick', 'metal', 'metal'],
'size': [20, 100, 35, 5, 15]})
我正在寻找编写一个 groupby、lambda 函数,看起来像这样:
groupby('building').agg(
proportion_of_blue_area=('size', lambda x: sum(x) if x == 'metal' / sum(x))).reset_index()
我正在寻找的预期输出是金属尺寸占建筑物总尺寸的百分比。我知道 lambda 函数实际上并没有调用“材料”列,我不确定在哪里/如何包含它。 我需要在 groupby.agg 中以它显示的方式解决这个问题。谢谢。
【问题讨论】:
-
这与您上一个问题有何不同?
-
我正在为 lambda 函数计算两列和参数,而不仅仅是 1。
-
groupby().agg()不会将信息从一列带到另一列。也许你想要groupby().apply()。
标签: python-3.x pandas lambda pandas-groupby