Фрейм данных Python в столбчатый формат для динамического доступа к столбцам

#python #dataframe #.loc

Вопрос:

Данные фрейма данных будут :

COL1 COL2 COL3
100 200 300
101 201 301
102 202 302
103 203 303

Ожидаемый результат: Формат как HBase (столбчатый способ)

Рассмотрим COL1 в качестве КЛЮЧЕВОГО столбца vaue

СТОЛБЕЦ КЛЮЧЕЙ Клавиша ценность
100 COL2 200
100 COL3 300
101 COL2 201
101 COL3 301
102 COL2 202
102 COL3 302
103 COL2 203
103 COL3 303

Я пробовал использовать .найдите, которые транспонируют/преобразуют все ключи в значения, как показано ниже.

 for idx in df.index:
     print (df.loc[idx])
 
 COL1  100
COL2  200
COL3  300
COL1  101
COL2  201
COL3  301
COL1  102
COL2  202
COL3  302
COL1  103
COL2  203
COL3  303
 

Но я не смог привести столбец KEY_COLUMN в качестве столбца 1, а КЛЮЧ и ЗНАЧЕНИЕ в качестве последующих столбцов. Не мог бы кто-нибудь, пожалуйста, предложить. Спасибо!

Ответ №1:

Попробуй pd.melt :

 df = (
    df.rename(columns={"COL1": "KEY_COLUMN"})
    .melt("KEY_COLUMN", var_name="KEY", value_name="VALUE")
    .sort_values(by="KEY_COLUMN")
)
print(df)
 

С принтами:

    KEY_COLUMN   KEY  VALUE
0         100  COL2    200
4         100  COL3    300
1         101  COL2    201
5         101  COL3    301
2         102  COL2    202
6         102  COL3    302
3         103  COL2    203
7         103  COL3    303
 

Комментарии:

1. Вышеприведенное действительно работает… Также он динамически обрабатывает столбцы… Должны ли мы добавить более 1 столбца в Key_column ?? Приведенный выше фрейм данных содержит COL1 в качестве КЛЮЧЕВОГО СТОЛБЦА, как ввести два ключевых СТОЛБЦА в качестве COL1 и COL2 ?