gpt4 book ai didi

python - 对于给定的 Pandas df,按列(最高 SUMMED 值优先)对 df 进行排序,然后在每个唯一值内按另一列排序

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:39 24 4
gpt4 key购买 nike

我的 df:

Test_Data = [('Client', ['A', 'A', 'A', 'B', 'B', 'B','C','C']),
('Currency', ['USD', 'EUR', 'USD', 'AUD', 'EUR', 'USD', 'GBP', 'USD']),
('SalesPerson', ['Dave', 'Dave', 'Bob', 'Dave', 'Dave', 'Bob','Dave','Bob']),
('Done_Trades', [1,1,2,3,3,4,5,6]),
('Average_Qty', [10, 50, 100, 10, 50, 1000, 50, 100]),
('Average_Qty_CAD', [1, 2, 3, 30,20, 10,1,2])

df = pd.DataFrame(dict(Test_Data))
print(df)

Client Currency SalesPerson Done_Trades Average_Qty Average_Qty_CAD
0 A USD Dave 1 10 1
1 A EUR Dave 1 50 2
2 A USD Bob 2 100 3
3 B AUD Dave 3 10 30
4 B EUR Dave 3 50 20
5 B USD Bob 4 1000 10
6 C GBP Dave 5 50 1
7 C USD Bob 6 100 2

一个。客户 B 的每个客户的 Average_Qty_CAD 总和最高 (60),因此它首先显示,然后是 A (6),然后是 C (3)。

在 B 中,Dave 具有最高的 Average_Qty_CAD (30),其次是 (20),Bob 具有第三 (10),因此我们希望 B 的行按 30、20、10 排序。

在 A 中,Bob 的 Average_Qty_CAD (3) 最高,然后是 Dave 的两个条目 (2,1),因此我们希望 A 排序为 3,2,1。

在 C 中,Bob 具有最高的 Average_Qty_CAD (1002,然后是 Dave (1),因此排序 2、1

另外,如果我想显示每个客户的总和 Average_Qty_CAD 需要添加什么?

期望的 df:

  Client Currency SalesPerson  Done_Trades  Average_Qty  Average_Qty_CAD Total per Client
2 B AUD Dave 3 10 30 60
1 B EUR Dave 3 50 20 60
0 B USD Bob 4 1000 10 60
3 A USD Bob 2 100 3 6
4 A EUR Dave 1 50 2 6
5 A USD Dave 1 10 1 6
6 C USD Bob 6 100 2 3
7 C GBP Dave 5 50 1 3

最佳答案

IIUC 你可以这样做:

m=(df.reindex(df.groupby('Client').Qty_CAD.transform(sum).
sort_values(ascending=False).index).reset_index(drop=True))
print(m)

  Client SalesPerson  Qty_CAD
0 B Bob 10000
1 B Dave 50
2 B Dave 10
3 A Bob 100
4 A Dave 50
5 A Dave 10
6 C Bob 100
7 C Dave 50

关于python - 对于给定的 Pandas df,按列(最高 SUMMED 值优先)对 df 进行排序,然后在每个唯一值内按另一列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56165334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com