首页 > 解决方案 > 如何对“groupby”执行操作,例如美元重量等

问题描述

全部,

我有一个看起来像这样的 DF:

allHoldingsLookUp[['carry_dt','sedol','notional_current','carry_rate']]

        carry_dt    sedol  notional_current  carry_rate
21579 2018-05-18  B27WYK0      1.476290e+05       75.00
21659 2018-05-18  6433912      2.029608e+02       40.00
21992 2018-05-18  2386009      3.002272e+05      100.00
22453 2018-05-18  B671GT8      1.610390e+06       75.00
22700 2018-05-18  6350260      2.582623e+06       55.00
22722 2018-05-18  6418801      1.947338e+06       75.00
22839 2018-05-18  6683416      3.062509e+02      600.00
22917 2018-05-18  6180230      2.594927e+06       40.67
23011 2018-05-18  7302215      2.774702e+05      125.00
23043 2018-05-18  B04QR13      1.113231e+06       60.00
23069 2018-05-18  BYXZ2W5      4.182451e+05      100.00
23120 2018-05-18  6444066      9.507816e+05       35.00
23136 2018-05-18  6683449      1.701068e+06       35.00
23476 2018-05-18  BDVLJ72      1.004499e+07       40.00
23491 2018-05-18  BDVLJ72      1.875754e+05      200.00
23533 2018-05-18  B73XCZ3      3.313149e+02       40.00
23595 2018-05-18  BF20GG0      6.167594e+05      150.00
23620 2018-05-18  B671GT8      9.426840e+05       50.00
23674 2018-05-18  2599131      5.370326e+04      500.00
23824 2018-05-18  6568610      2.244832e+06       35.00
23831 2018-05-18  2311120      1.158353e+06       50.00
23836 2018-05-18  B04QR13      6.560241e+05      125.00
23914 2018-05-18  2599131      1.127563e+06      100.00
23926 2018-05-18  B3L2NF1      2.280907e+06       42.51
24014 2018-05-18  6771645      2.457539e+06       40.00
24067 2018-05-18  6536684      2.954588e+05      100.00
24238 2018-05-18  B613DJ9      1.055963e+06       47.00
24240 2018-05-18  2458771      6.187657e+02       20.00
24294 2018-05-18  6490917      2.855108e+06       35.00
24414 2018-05-18  2639349      1.483675e+05       50.00

现在我通常很容易做标准的分组操作,例如

allHoldingsLookUp.groupby(['carry_dt', 'sedol'], as_index=False)['carry_rate'].agg({"availMin": "min", "availSum":lambda x: sum(x)})

现在我想通过涉及另一列“notional_current”对 groupby 执行操作

我如何“名义上”加权“carry_rate”列?IE,

在 excel 中它会与此类似。

sumproduct(allHoldingsLookUp['notional_current'],allHoldingsLookUp['carry_rate'])/sum(allHoldingsLookUp['notional_current'])

更一般地说,我如何通过涉及另一列对“分组依据”执行操作?

非常感谢

标签: pythonpython-3.xgroup-bypandas-groupby

解决方案


推荐阅读