首页 > 解决方案 > 用于动态访问列的 Python 数据框到列格式

问题描述

数据框数据将是:

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

预期输出:格式为 HBase(列方式)

将 COL1 视为 KEY_COLUMN 值

KEY_COLUMN 钥匙 价值
100 COL2 200
100 COL3 300
101 COL2 201
101 COL3 301
102 COL2 202
102 COL3 302
103 COL2 203
103 COL3 303

我尝试使用 .loc 将所有键转置/转换为值,如下所示。

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 列,将 KEY 和 VALUE 作为后续列。任何人都可以请建议。谢谢!

标签: pythondataframe.loc

解决方案


尝试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

推荐阅读