Python Dataframe 到 Columnar 格式,用于动态访问列
Python Dataframe to Columnar format for accessing the columns dynamically
Dataframe 数据将为:
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,transpose/convert 所有键值如下。
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 作为后续列。任何人都可以请建议。谢谢!
尝试 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
Dataframe 数据将为:
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,transpose/convert 所有键值如下。
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 作为后续列。任何人都可以请建议。谢谢!
尝试 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