我已成功删除了我的数据:
bins = [-np.inf,0,10000,20000,40000,60000,80000,100000,np.inf] # include infinity value as the endpoint to the bins
labels = ['0','10K', '20K','40K','60K', '80K','100K','> 100K']
df_Done = df[
(df['state'].str.contains('Done'))
][['Year_Month','rfq_qty_CAD_Equiv']].copy()
display(df_Done.head(5))
Year_Month rfq_qty_CAD_Equiv
2018-05 259,774
2018-05 259,774
2018-05 363,684
2018-05 3,896,610
2018-05 666,340
df_Done.info()
Year_Month 700 non-null object
rfq_qty_CAD_Equiv 700 non-null float64
Bucket 700 non-null category
df_Done['Bucket'] = pd.cut(df_Done['rfq_qty_CAD_Equiv'], bins=bins, labels=labels)
display(df_Done.groupby(['Year_Month','Bucket'], as_index=False)['Bucket'].size())
从一个月到一个月,一些水桶可能没有交易,在这种情况下,我希望桶线显示为零。在下面的结果中,2017-11没有10K桶(想要看10K和0)。有没有办法插入垃圾桶/桶,即使没有交易来填充这些桶?
还有一种方法可以输出结果而不是文本格式但是网格格式?
答案 0 :(得分:1)
按reindex
创建的新MultiIndex
使用from_product
,按cat.categories
分类:
df = df_Done.groupby(['Year_Month','Bucket'], as_index=False)['Bucket'].size()
mux = pd.MultiIndex.from_product([df_Done['Year_Month'].unique(),
df_Done['Bucket'].cat.categories])
df = df.reindex(mux, fill_value=0)
print (df)
2018-05 0 0
10K 0
20K 0
40K 0
60K 0
80K 0
100K 0
> 100K 5
dtype: int64