Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Pandas中查找groupby数据帧的秩_Python_Pandas_Numpy_Dataframe_Group By - Fatal编程技术网

Python 如何在Pandas中查找groupby数据帧的秩

Python 如何在Pandas中查找groupby数据帧的秩,python,pandas,numpy,dataframe,group-by,Python,Pandas,Numpy,Dataframe,Group By,我很难找到一种简单的方法来按日期和产品对产品的价值进行排序。例如,在2020年6月,我们有6种产品,它们有不同的价值,我想根据它们在总产品中的市场份额对它们进行排名,在任何情况下,这相当于根据它们的价值对它们进行排名 我试图使用的答案,但它没有提供正确的输入 我可以很好地将这个df转换成一个2d列表,并使用for循环进行排序,但我要说的是,由于我使用的是pandas,我将尽最大努力坚持使用.rank之类的功能 试着传球 试着传球 哦,哇。。。简单占上风我想,你甚至不需要使用groupby…嗨,如

我很难找到一种简单的方法来按日期和产品对产品的价值进行排序。例如,在2020年6月,我们有6种产品,它们有不同的价值,我想根据它们在总产品中的市场份额对它们进行排名,在任何情况下,这相当于根据它们的价值对它们进行排名

我试图使用的答案,但它没有提供正确的输入

我可以很好地将这个df转换成一个2d列表,并使用for循环进行排序,但我要说的是,由于我使用的是pandas,我将尽最大努力坚持使用.rank之类的功能

试着传球

试着传球


哦,哇。。。简单占上风我想,你甚至不需要使用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