如何用Pivot Tables或Group By修改Pandas Dataframe并导出指定CSV
Pandas Dataframe转特定格式CSV解决方案
原代码问题点
- 分组语法错误:
groupby('Sample ID','ANALYTE')多列分组必须用列表,而且执行get_dummies后ANALYTE已经转成列,不再是可分组的字段 - 逻辑绕远:先设多索引再做哑变量的操作,不仅复杂还会丢失
Result_F的实际检测值(目标CSV需要的是结果数值,不是0/1标记)
正确实现代码
要把ANALYTE的不同取值转成表头,同时保留Sample ID、Sample Date和对应Result_F数值,用pivot_table一步就能搞定:
# 生成符合要求的宽表 df2 = SAMPDATA_w.pivot_table( index=['Sample ID', 'Sample Date'], # 保留的标识列 columns='ANALYTE', # 要转成表头的字段 values='Result_F', # 对应填充的数值 aggfunc='max' # 同指标多结果时取最大值,按需换成'first'取第一个 ).reset_index() # 清除列层级名称,让表头直接显示指标名 df2.columns.name = None # 导出CSV,不带索引列 df2.to_csv('适配上传的文件.csv', index=False)
额外调整建议
- 如果需要把缺失值换成特定内容(比如空字符串或0),可以在
reset_index()后加.fillna('')或.fillna(0) - 要是原始数据里
Sample ID+Sample Date+ANALYTE是唯一组合,用aggfunc='first'会更准确
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

