Pandas из колонок в строки

Рейтинг: -3Ответов: 1Опубликовано: 14.05.2023

У меня есть дф

А мне нужно перевести колонки Comp1...Comp10 в одну колонку Сomp

Помогите, пожалуйста

Ответы

▲ 2Принят

Сразу предупрежу-эта функция не использует многие фишки 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).