Python 如何在Pandas中查找groupby数据帧的秩
我很难找到一种简单的方法来按日期和产品对产品的价值进行排序。例如,在2020年6月,我们有6种产品,它们有不同的价值,我想根据它们在总产品中的市场份额对它们进行排名,在任何情况下,这相当于根据它们的价值对它们进行排名 我试图使用的答案,但它没有提供正确的输入 我可以很好地将这个df转换成一个2d列表,并使用for循环进行排序,但我要说的是,由于我使用的是pandas,我将尽最大努力坚持使用.rank之类的功能 试着传球 试着传球Python 如何在Pandas中查找groupby数据帧的秩,python,pandas,numpy,dataframe,group-by,Python,Pandas,Numpy,Dataframe,Group By,我很难找到一种简单的方法来按日期和产品对产品的价值进行排序。例如,在2020年6月,我们有6种产品,它们有不同的价值,我想根据它们在总产品中的市场份额对它们进行排名,在任何情况下,这相当于根据它们的价值对它们进行排名 我试图使用的答案,但它没有提供正确的输入 我可以很好地将这个df转换成一个2d列表,并使用for循环进行排序,但我要说的是,由于我使用的是pandas,我将尽最大努力坚持使用.rank之类的功能 试着传球 试着传球 哦,哇。。。简单占上风我想,你甚至不需要使用groupby…嗨,如
哦,哇。。。简单占上风我想,你甚至不需要使用groupby…嗨,如果值不同,它实际上不起作用,我已经编辑了这个问题。哦,哇。。。简单性占了上风,我想,你甚至不需要使用groupby…嗨,如果值不同,它实际上不起作用,我已经编辑了这个问题。
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
df.groupby('Date')['Value'].rank(method='dense')
Out[224]:
0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
5 6.0
6 6.0
7 5.0
8 4.0
9 3.0
10 2.0
11 1.0
Name: Value, dtype: float64