按State列统计Wallet Type列值,生成指定格式统计表格
解决表格按State统计Wallet Type的需求
原始Table A
Wallet Type State ------------------------ 106 1 106 2 106 1 106 1 106 2 112 1 112 2 112 2
目标Table B(期望结果)
State Distributor(106) Agent(112) ---------------------------------------- 1 3 1 2 2 2
嘿,这事儿很简单!你要做的就是把原始的行数据转换成按State分组,统计不同Wallet Type数量的透视表,我给你两个常用工具的实现方案:
方案1:用SQL实现
如果你的数据存在数据库里,用下面的SQL查询就能直接得到目标结果:
SELECT State, COUNT(CASE WHEN "Wallet Type" = 106 THEN 1 END) AS "Distributor(106)", COUNT(CASE WHEN "Wallet Type" = 112 THEN 1 END) AS "Agent(112)" FROM YourTableName -- 替换成你的实际表名 GROUP BY State ORDER BY State;
逻辑解释:
- 用
GROUP BY State把数据按State分组 - 用
CASE WHEN筛选出每个组内Wallet Type为106/112的记录,再用COUNT统计数量 - 最后按State排序,和目标Table B的格式完全匹配
方案2:用Python Pandas实现
如果是用Python处理数据,用Pandas的透视表功能可以快速搞定:
import pandas as pd # 先构造原始数据(如果你的数据是从文件读取的,替换成pd.read_csv之类的即可) df = pd.DataFrame({ 'Wallet Type': [106, 106, 106, 106, 106, 112, 112, 112], 'State': [1, 2, 1, 1, 2, 1, 2, 2] }) # 生成透视表并调整格式 table_b = df.pivot_table( index='State', columns='Wallet Type', aggfunc='size', # 统计行数 fill_value=0 # 空值填充为0 ).rename(columns={106: 'Distributor(106)', 112: 'Agent(112)'}).reset_index() # 打印出和目标格式一致的结果 print(table_b.to_string(index=False))
运行这段代码后,输出的结果就和你要的Table B一模一样啦!
内容的提问来源于stack exchange,提问作者Aayush Rajopadhyaya
相关产品推荐
相关产品推荐

