python - 按两列分组时显示空桶
问题描述
我希望在对两列进行分组时填充空桶。这是设置和生成的数据框:
bins = [-np.inf,0,10000,20000,40000,60000,80000,100000,np.inf] # include infinity value as the endpoint to the bins
labels = ['0K','10K', '20K','40K','60K', '80K','100K','> 100K']
df_Done_Major['Bucket'] = pd.cut(df_Done['rfq_qty'], bins=bins, labels=labels)
# Polpulate empty buckets with 0 adjacently
df_Done_Major_Fill_Empty_Bucket = df_Done_Major.groupby(['Bucket', 'currency_str'], as_index=False)['Bucket'].size()
结果 df 符合预期:
display(df_Done_Major_Fill_Empty_Bucket)
Bucket currency_str count
10K AUD 9
60K AUD 1
60K USD 1
100K AUD 1
100K USD 1
> 100K AUD 57
> 100K CAD 4
> 100K USD 5
期望的结果:
currency_str Bucket Count
AUD 0K 9
10K 0
20K 0
40K 0
60K 1
80K 0
100K 1
> 100K 57
USD 0K 0
10K 0
20K 0
40K 0
60K 1
80K 0
100K 1
> 100K 5
CAD 0K 0
10K 0
20K 0
40K 0
60K 0
80K 0
100K 0
> 100K 4
我的尝试:
mux = pd.MultiIndex.from_product([df_Done_Major_Fill_Empty_Bucket.index.levels[1], df_Done_Major['Bucket'].cat.categories])
df_Done_Major_Fill_Empty_Bucket = df_Done_Major_Fill_Empty_Bucket.reindex(mux, fill_value=0)
标签上没有返回计数。关于如何返回每笔交易的计数有什么建议吗?
display(df_Done_Major_Fill_Empty_Bucket)
AUD 0K 0
10K 0
20K 0
40K 0
60K 0
80K 0
100K 0
> 100K 0
CAD 0K 0
10K 0
20K 0
40K 0
60K 0
80K 0
100K 0
> 100K 0
EUR 0K 0
10K 0
.
.
.
解决方案
这是与所引用的分组和索引有关的问题
df_Done_Major_Fill_Empty_Bucket = df_Done_Major.groupby(['currency_str','Bucket'], as_index=False)['Bucket'].size()
mux = pd.MultiIndex.from_product([df_Done_Major_Fill_Empty_Bucket.index.levels[0], df_Done_Major['Bucket'].cat.categories])
推荐阅读
- python - 如何从python中的字符串中分离出某些数字?
- python - 我应该如何处理这个异常 Python Sympy?
- windows - 为什么通过 FFI 接口从 Rust 调用 Ada DLL 时会卡在 adainit?
- java - Webflux 没有在我的 Atlas MongoDB(集群)中插入信息
- c# - linq SelectMany 日期
- html - 将ol的文本涂成红色
- javascript - 如何解决JavaScript中的以下问题?
- php - 为什么我会收到带有此 CURL PUT 的通用 internal_server_error 消息?
- powershell - 调用另一个脚本时 PowerShell 忽略配置文件脚本
- c++ - Windows 10 - 模拟目录路径