如何将pandas DataFrame列名转为field列并拼接对应列数据
pandas宽表转指定格式长表实现方法
该需求属于典型的宽表转长表操作,优先使用pandas内置的melt()方法实现,代码简洁效率高。
实现代码
import pandas as pd # 构造原始示例DataFrame df = pd.DataFrame(data=[[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c']) # 执行格式转换 result = df.melt(var_name='field', value_name='data') print(result)
运行输出
field data 0 a 1 1 a 4 2 b 2 3 b 5 4 c 3 5 c 6
和预期输出完全匹配。
参数说明
var_name:指定原DataFrame列名转换后存储的新列名,此处对应需求中的field列value_name:指定原DataFrame各单元格数值转换后存储的新列名,此处对应需求中的data列
备选实现方式
如果习惯用stack()接口,也可以通过如下代码实现,输出结果完全一致:
result = df.stack().reset_index() result.columns = ['tmp_idx', 'field', 'data'] result = result[['field', 'data']].reset_index(drop=True)
该方法需要手动重命名列、清理多余索引字段,可读性不如melt(),日常使用优先选择前者即可。
内容的提问来源于stack exchange,提问作者Felix Du
相关产品推荐
相关产品推荐

