Python如何将DataFrame转换为HBase风格的列式存储格式
实现方案
你需要的宽表转HBase风格长表的需求可以直接用Pandas内置的melt方法实现,无需手动遍历索引,性能远高于循环遍历方案。
完整示例代码
首先构造你描述的测试DataFrame,再执行转换:
import pandas as pd # 构造测试数据 df = pd.DataFrame({ 'COL1': [100, 101, 102, 103], 'COL2': [200, 201, 202, 203], 'COL3': [300, 301, 302, 303] }) # 转换为目标列式结构 result = df.melt( id_vars=['COL1'], # 指定保留为行主键的字段 var_name='KEY', # 原列名存储到KEY列 value_name='VALUE' # 原列值存储到VALUE列 ).rename(columns={'COL1': 'KEY_COLUMN'}) # 重命名主键列符合要求 print(result)
如果你不需要显式指定要展开的列,方法会自动把除了
id_vars之外的所有列转为键值对,新增列时无需修改代码,适配动态列场景。
输出结果
运行后得到的三列结构完全符合预期:
KEY_COLUMN KEY VALUE 0 100 COL2 200 1 101 COL2 201 2 102 COL2 202 3 103 COL2 203 4 100 COL3 300 5 101 COL3 301 6 102 COL3 302 7 103 COL3 303
内容的提问来源于stack exchange,提问作者Priyan
相关产品推荐
相关产品推荐

