Pandas из колонок в строки
У меня есть дф
А мне нужно перевести колонки Comp1...Comp10 в одну колонку Сomp
Помогите, пожалуйста
Источник: Stack Overflow на русском
У меня есть дф
А мне нужно перевести колонки Comp1...Comp10 в одну колонку Сomp
Помогите, пожалуйста
Сразу предупрежу-эта функция не использует многие фишки pandas, а соответственно гораздо медленнее, чем могла бы быть, но моих знаний на большее пока не хватает. Так что если оригинальный датафрейм большой-функция может выполняться долго или вообще зависнуть.
list_col = ['Comp1','Comp2','Comp3','Comp4','Comp5','Comp6','Comp7','Comp8','Comp9','Comp10'] #список колонок, которые необходимо преобразовать
def changer(df, columns):
a = [] # список для городов
b = [] # список для наименования Comp
c = [] # список для значения каждого Comp
for i in range(0, len(df)):
for j in columns:
a.append(df['Город'].iloc[i])
b.append(j)
c.append(df[j].iloc[i])
df_h = pd.DataFrame({'Город': a, 'Comp': b,'Value': c})
return df_h
new_df = changer(df, list_col) # функция принимает на вход оригинальный датафрейм и список столбцов
В результате выполнения функция вернет датафрейм с 3 столбцами: Город, Comp и Value. Длинна этого датафрейма будет в 10 раз больше, чем у оригинального (тк используем 10 столбцов Comp1-10).