python - Pandas 分组/透视数据,而一列的条目成为新标签

标签 python pandas csv

我想用python + pandas按技术总结发电厂的容量( previous question )。

对于此任务,数据必须进行分组/透视,而“技术”列中的列条目应成为列标签

这是我的输入:

Plant Name,Nameplate Capacity,Technology,...
Barry,153.1,Natural Gas Steam Turbine,..
Barry,153.1,Natural Gas Steam Turbine,..
Barry,403.7,Conventional Steam Coal,..
Barry,788.8,Conventional Steam Coal,..
Barry,195.2,Natural Gas Fired Combined Cycle,..
Barry,195.2,Natural Gas Fired Combined Cycle,..

以及所需的输出:

Plant Name,Natural Gas Steam Turbine,Conventional Steam Coal,Natural Gas Fired Combined Cycle,..
Barry,306.2,1192.5,390.4,..

我尝试了一些命令,但没有成功:

df.groupby(['Plant Name', 'Technology']).sum().pivot('Plant Name', 'Technology').fillna(0)

#with numpy as np
res = df.pivot_table(index=["Plant Name"], columns=["Plant Name"], values=["Technology"], aggfunc=np.sum)

一个附加问题

如何找出每行的最大条目(例如我的示例中的“常规动力煤”)作为新列?

最佳答案

我认为需要更改列名称并添加参数fill_value:

res = df.pivot_table(index="Plant Name", 
                     columns="Technology", 
                     values="Nameplate Capacity", 
                     aggfunc=np.sum,
                     fill_value=0).reset_index()
print (res)
Technology Plant Name  Conventional Steam Coal  \
0               Barry                   1192.5   

Technology  Natural Gas Fired Combined Cycle  Natural Gas Steam Turbine  
0                                      390.4                      306.2  

第一个解决方案应更改为聚合 sumunstack 的指定列 reshape :

res = (df.groupby(['Plant Name', 'Technology'])['Nameplate Capacity']
         .sum()
         .unstack(fill_value=0)
         .reset_index())
print (res)
Technology Plant Name  Conventional Steam Coal  \
0               Barry                   1192.5   

Technology  Natural Gas Fired Combined Cycle  Natural Gas Steam Turbine  
0                                      390.4                      306.2  

关于python - Pandas 分组/透视数据,而一列的条目成为新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634368/

相关文章:

python - str.format(**arg) 可以用来检查格式吗?

python - Statsmodels:从 VARMAX.fit() 获取误差相关矩阵

csv - 如何对 CSV 数据进行 curl POST?

python - 使用 python pandas 将 csv 转换为 html

python - 聚合id并在不同的列中附加不同的值pandas

postgresql - 从 CSV 加载 PostgreSQL 表,数据在括号之间带有逗号

mysql - 如何使用 MySql 将 CSV 文件上传到多个数据库表中?

python - 使用 pandas size() 函数包含零计数的项目?

python - 用于编辑 numpy 计数数组的一行解决方案? (Python)

python - 根据距离和出现频率选择一个项目(从一组项目中)