我的数据框看起来像这样(但有大约100,000行数据):
ID,Total,TotalDate,DaysBtwRead,Type,YearlyAvg
1,1250,6/2/2017,17,AT267,229
2,1670,2/3/2012,320,PQ43,50
我尝试使用
分组年度平均总数 df.groupby(pd.cut(df['YearlyAvg'], np.arange(0,1250,50))).count()
这样我就可以设置一个独特的蒙特卡洛分布,但我需要按照每个单独的类型进行分组。这当前仅计算每个范围而不管其他任何值。
我没有计算整体总数,而是尝试设置我的代码,以便输出看起来更像下面的内容(包含每个范围计数的YearlyAvg)
Index,YearlyAvg
AT267(0, 50], 200
PQ43(0, 50], 123
AT267(50, 100], 49
PQ43(50, 100], 67
除了为每个Type值创建单独的数据框之外,还有更简单的方法吗?
答案 0 :(得分:2)
您可以将unstack
与stack
df['bins']=pd.cut(df['YearlyAvg'], np.arange(0,1250,50))
df.groupby(['Type','bins']).size().unstack(fill_value=0).stack()# also here will create the multiple index for achieve what you need
Out[1783]:
Type bins
AT267 (0, 50] 0
(200, 250] 1
PQ43 (0, 50] 1
(200, 250] 0
dtype: int64