我有一行代码,它通过两列的 groupby
命令生成表格计数:
beat_pri = df_2011.groupby(['Beat', 'Priority']).size()
制作的表格:
Beat Priority Count
01X 1.0 394
2.0 1816
02X 1.0 644
2.0 1970
02Y 1.0 661
...
我想做的是创建一个新列'Total'
,它是按beat
列分组的总计数。例如
Beat Priority Count Total
01X 1.0 394 2210
2.0 1816
02X 1.0 644 2614
2.0 1970
02Y 1.0 661 2970
2.0 2309
...
到目前为止我尝试过的是:
beat_pri2011['Total'] = df_2011.groupby(['Beat']).size().to_frame('total')
但是这会产生:
Beat Priority Count Total
01X 1.0 394 NaN
2.0 1816 NaN
02X 1.0 644 NaN
2.0 1970 NaN
02Y 1.0 661 NaN
2.0 2309 NaN
...
提前致谢。
(我重新输入了这个问题,以消除之前带来的任何困惑。)
最佳答案
我之前误解了你的问题。我从您最近的编辑中了解到,您希望按总计数对 groupby 之后的聚合进行排序。
下面是你想要的吗
df = pd.DataFrame([('ST&SAN P...', '1.0', '06X', '1.0', 'PDOA', 'POSSIBLE DEAD PERSON'), ('ST&HANNAH ST', '1.0', '07X', '1.0', '415GS', '415 GUNSHOTS'), ('ST&MARKET ST', '1.0', '07X', '2.0', '415GS', '415 GUNSHOTS'), ('PRENTISS ST', '2.0', '06X', '2.0', '415GS', '415 GUNSHOTS'), ('AV&FOOTH...', '2.0', '07X', '1.0', '415GS', '415 GUNSHOTS')], columns=('Location', 'Area-Id', 'Beat', 'Priority', 'Type-Id', 'Incident Type Description'))
df2 = df.groupby(["Beat", "Priority"])[["Location"]].count() \
.rename(dict(Location="Count"), axis=1).reset_index()
df2.merge(df2.groupby("Beat").sum(), on="Beat", suffixes=("", "_Total")) \
.sort_values("Count_Total", ascending=False)
结果
Beat Priority Count Count_Total
2 07X 1.0 2 3
3 07X 2.0 1 3
0 06X 1.0 1 2
1 06X 2.0 1 2
关于python - 从 groupby.size() 命令查找总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58199198/