Lum*_*mos 1 python sorting group-by pandas
我的数据框包括三列:标识符列A和B,它们的组合给出了一个唯一的标识符,Date我需要按每个标识符中的顺序对该列进行排序。在排序和分组之后,我希望在每个组中添加一个包含行号的列。
df
A B Date
cat CityA 2014-08-05
cat CityA 2012-09-14
cat CityA 1972-10-15
dog CityC 1999-12-01
dog CityC 1997-09-23
dog CityC 1995-12-19
Run Code Online (Sandbox Code Playgroud)
现在,这段代码有 group byA和Bsort Date,我如何添加行号?
grouped = df.sort_values(['A', 'B', 'Date'],
ascending=[True, True, False]).groupby(['A','B'])
Run Code Online (Sandbox Code Playgroud)
Expected df
A B Date rowNumber
cat CityA 2014-08-05 1
cat CityA 2012-09-14 2
cat CityA 1972-10-15 3
dog CityC 1999-12-01 1
dog CityC 1997-09-23 2
dog CityC 1995-12-19 3
Run Code Online (Sandbox Code Playgroud)
让我们分两步完成,我列出了总计数和累计计数
out = df.sort_values(['A', 'B', 'Date'],
ascending=[True, True, False])
out['row number'] = out.groupby(['A','B']).cumcount()
out['count number'] = out.groupby(['A','B'])['Date'].transform('count')
Run Code Online (Sandbox Code Playgroud)