df = pd.DataFrame({'key1' : ['a','a','a','b','b'], 'key2' : ['c','d','c','c','d'], 'data' : [1,10,2,3,30]})
>>> df
key1 key2 data0 a c 11 a d 102 a c 23 b c 34 b d 30目標結(jié)果
key1 key2 data row_number0 a c 1 11 a d 10 12 a c 2 23 b c 3 14 b d 30 1以key1、key2分組,按照data排序,取出序號應該怎么處理呢?搜索找到的以下方法沒有成功df['row_number'] = df['data'].groupby(df['key1','key2']).rank(ascending=True,method='first')
2 回答

守著一只汪
TA貢獻1872條經(jīng)驗 獲得超4個贊
def cumsum_seq(v): sub = v.sort_values('data') sub['seq'] = sub['seq'].cumsum() return sub.loc[:, ['data', 'seq']] df['seq'] = 1df.groupby(['key1', 'key2']).apply(cumsum_seq).reset_index().drop(columns='level_2')
添加回答
舉報
0/150
提交
取消