#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 ?