【发布时间】:2021-02-21 23:10:57
【问题描述】:
我很难找到一种简单的方法来对按日期和产品分组的产品值进行排名。比如2020年6月,我们有6个产品,它们有不同的价值,我想按照它们在总数中的市场份额来排名,无论如何,这相当于按照它们的价值来排名。
我尝试使用this link 的答案,但没有给出正确的输入。
我可以很高兴地将这个 df 转换为二维列表并使用 for 循环进行排序,但我想说,由于我使用的是 pandas,我会尽量坚持使用 .rank() 之类的功能。
df = pd.DataFrame()
df['Market'] = ['usa'] *2 + ['russia']*2 + ['china'] * 8
df["Product"] = ["A", "B", "C", "D", "E", "F"] * 2
df["Date"] = ["1/6/2020"] * 6 + ["1/9/2020"] * 6
df["Date"] = df["Date"].astype("datetime64[ns]")
df["Value"] = [100, 200, 300, 400, 500, 600, 1000, 2000, 800, 900, 999, 10000]
Product Date Value Expected Ranking
0 A 1/6/2020 100 1
1 B 1/6/2020 200 2
2 C 1/6/2020 300 3
3 D 1/6/2020 400 4
4 E 1/6/2020 500 5
5 F 1/6/2020 600 6
6 A 1/9/2020 1000 3
7 B 1/9/2020 2000 2
8 C 1/9/2020 800 6
9 D 1/9/2020 900 5
10 E 1/9/2020 999 4
11 F 1/9/2020 10000 1
【问题讨论】:
标签: python pandas numpy dataframe group-by