熊猫使用列索引位置而不是列名来融化函数

问题描述

是否可以将参数的列名设置为列index的位置,而不是列名? 我看到的每个示例都在value_vars上写有列名。我需要使用列索引。

例如,代替:

df2 = pd.melt(df,value_vars=['asset1','asset2'])

使用类似的内容

df2 = pd.melt(df,value_vars=[0,1])

解决方法

通过索引选择列名称:

df = pd.DataFrame({
        'asset1':list('acacac'),'asset2':[4]*6,'A':[7,8,9,4,2,3],'D':[1,3,5,7,1,0],'E':[5,6,4]
})



df2 = pd.melt(df,id_vars=df.columns[[0,1]],value_vars=df.columns[[2,3]],var_name= 'c_name',value_name='Value')
print (df2)

   asset1  asset2 c_name  Value
0       a       4      A      7
1       c       4      A      8
2       a       4      A      9
3       c       4      A      4
4       a       4      A      2
5       c       4      A      3
6       a       4      D      1
7       c       4      D      3
8       a       4      D      5
9       c       4      D      7
10      a       4      D      1
11      c       4      D      0