相关疑难解决方法(0)

pandas group by year,按销售列排名,在具有重复数据的数据框中

我想创建一年的排名(因此在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
Run Code Online (Sandbox Code Playgroud)

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

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 …
Run Code Online (Sandbox Code Playgroud)

python duplicates rank pandas pandas-groupby

16
推荐指数
1
解决办法
2万
查看次数

熊猫按条件按列值排序

我有以下数据集(非唯一ID)

id   data  country
1    8     B
2    15    A
3    14    D
3    19    D
3    8     C
3    20    A
Run Code Online (Sandbox Code Playgroud)

对于国家/地区为“ A”的行,我想添加一个“等级”列。

对于国家/地区为A的行,我想将“等级”值保留为空(或0)。

预期产量:

id   data  country rank
1    8     B       1
2    15    A       0
3    14    D       3 
3    19    D       4
3    8     C       2
3    20    A       0
Run Code Online (Sandbox Code Playgroud)

这篇熊猫的专栏文章按列值提供了很好的见解。

我可以试试 :

df['rank'] = df['data'].rank(ascending=True)
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何考虑“国家”?

python sorting pandas

1
推荐指数
1
解决办法
2210
查看次数

标签 统计

pandas ×2

python ×2

duplicates ×1

pandas-groupby ×1

rank ×1

sorting ×1