gpt4 book ai didi

python - Pandas 按年分组,按销售列排名,在具有重复数据的数据框中

转载 作者:太空狗 更新时间:2023-10-29 17:03:52 30 4
gpt4 key购买 nike

我想按年份创建排名(因此在 2012 年,经理 B 是 1。在 2011 年,经理 B 又是 1)。我在 pandas rank 函数上挣扎了一段时间,不想求助于 for 循环。

s = pd.DataFrame([['2012','A',3],['2012','B',8],['2011','A',20],['2011','B',30]], columns=['Year','Manager','Return'])

Out[1]:
Year Manager Return
0 2012 A 3
1 2012 B 8
2 2011 A 20
3 2011 B 30

我遇到的问题是附加代码(之前认为这不相关):

s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
b = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])

s = s.append(b)
s['Rank'] = s.groupby(['Year'])['Return'].rank(ascending=False)

raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects

有什么想法吗?
这是我正在使用的真实数据结构。重新索引时遇到问题..

最佳答案

听起来您想按Year 分组,然后按降序排列Returns

import pandas as pd
s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]],
columns=['Year', 'Manager', 'Return'])
s['Rank'] = s.groupby(['Year'])['Return'].rank(ascending=False)
print(s)

产量

   Year Manager  Return  Rank
0 2012 A 3 2
1 2012 B 8 1
2 2011 A 20 2
3 2011 B 30 1

解决 OP 修改后的问题:错误信息

ValueError: cannot reindex from a duplicate axis

尝试对索引中具有重复值的 DataFrame groupby/rank 时发生。您可以通过构造 s 以在附加后具有唯一索引值来避免此问题:

s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
b = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
s = s.append(b, ignore_index=True)

产量

   Year Manager  Return
0 2012 A 3
1 2012 B 8
2 2011 A 20
3 2011 B 30
4 2012 A 3
5 2012 B 8
6 2011 A 20
7 2011 B 30

如果您已经使用

附加了新行
s = s.append(b)

然后使用reset_index创建唯一索引:

s = s.reset_index(drop=True)

关于python - Pandas 按年分组,按销售列排名,在具有重复数据的数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604665/

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