#python #pandas #dataframe #melt
#python #pandas #фрейм данных #плавление
Вопрос:
Есть ли способ задать имена столбцов для аргументов в качестве index
позиции столбца, а не имен столбцов? Каждый пример, который я вижу, написан с именами столбцов value_vars
. Мне нужно использовать индекс столбца.
Например, вместо:
df2 = pd.melt(df,value_vars=['asset1','asset2'])
Используя что-то похожее на:
df2 = pd.melt(df,value_vars=[0,1])
Ответ №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,3,6,9,2,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
Комментарии:
1. Спасибо, также, если мне нужно объявить один столбец для аргумента var_name, что мне делать? (Вместо ‘c_name’) df_par = df.melt(id_vars = df.columns[[0,1]], var_name= ‘c_name’, value_name=’Значение’)
2. @MerveDemirci — Как ты думаешь
df2 = pd.melt(df,value_vars=df.columns[[0]])
?3. Да, я пробовал, но выдает ошибку типа: в masked_arith_op вызывает ошибку типа (type(y)) Ошибка типа: <класс ‘список’>
4. @MerveDemirci — But
var_name
является строкой для нового имени столбца, поэтому не может использоваться так5. Да, вы правы, мне, конечно, нужно указать имя. Спасибо.