问题描述
是否可以将参数的列名设置为列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