具有重复列名的 Python unpivot 数据框

Posted

技术标签:

【中文标题】具有重复列名的 Python unpivot 数据框【英文标题】:Python unpivot dataframe with duplicate column names 【发布时间】:2019-03-03 02:59:20 【问题描述】:

我有一个巨大的 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

【问题讨论】:

【参考方案1】:

您可以连续使用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)

【讨论】:

以上是关于具有重复列名的 Python unpivot 数据框的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Unpivot 中包含列名

具有重复列名的 DataReader

具有相同列名的命名查询内部连接表的重复数据/值

UNPIVOT 表列

oracle列转行函数

具有比特币输入和输出的重复列名