python - 具有重复列名的 Python unpivot 数据框
问题描述
我有一个巨大的 excel 文件,其中包含如下数据:
DATE OIL GAS WATER OIL GAS WATER
01-01-2018 100 200 300 10 20 30
01-02-2018 200 500 300 30 40 10
01-03-2018 10 50 30 20 40 10
...
如何使用 python 将其转换为以下格式:
DATE OIL GAS WATER
01-01-2018 100 200 300
01-02-2018 200 500 300
01-03-2018 10 50 30
01-01-2018 10 20 30
01-02-2018 30 40 10
01-03-2018 20 40 10
解决方案
您可以连续使用pd.melt(Dataframe,...)
和concat
df
( Dataframe ) 列:
df1 = pd.melt(df,id_vars=['Date'],value_vars=['Oil','Oil.1'], value_name='Oil')
df2 = pd.melt(df,id_vars=['Date'],value_vars=['Gas','Gas.1'], value_name='Gas')
df3 = pd.melt(df,id_vars=['Date'],value_vars=['Water','Water.1'], value_name='Water')
pd.concat([df1.Date,df1.Oil,df2.Gas,df3.Water],axis=1)
推荐阅读
- reactjs - Relay QueryRenderer does not return expected props from query
- c# - How to Retrieve Input from Backend Code to HTML OnClick ASP.NET
- leaflet - 使用传单绘制路径
- javascript - PM2 与 Meteor 在部署时出错
- php - 将pdf文件拆分为具有相同外观的多个pdf文件
- python - OpenERP功能使整个系统变慢
- teradata - COLLECT STATS 没有得到真正的价值
- java - 更新查询成功执行,但数据未在 java 中更新
- jquery - 通过jquery中的构造函数设置类属性
- c# - 字典
.Values - 它是否分配新的内存和时间复杂度