如何将DataFrame多列按顺序堆叠合并为单列?
解决方案
以下几种方法都能实现你需要的多列合并为单列的需求,适配你提到的「多列、数据类型一致」的实际场景:
方法1:使用pd.concat(直观易懂,适合任意数量的列)
将每一列转换为Series后拼接,最后转为DataFrame并指定列名:
import pandas as pd test = pd.DataFrame({'ID': [5, 6, 7, 8], 'Price': [10, 12, 14, 16]}) # 遍历所有列,拼接成一个Series后转为DataFrame result = pd.concat([test[col] for col in test.columns], ignore_index=True).to_frame('ID') print(result)
输出结果:
ID 0 5 1 6 2 7 3 8 4 10 5 12 6 14 7 16
方法2:使用stack()处理(基于你已尝试的方法优化)
对stack()的结果重置索引并转为DataFrame即可:
result = test.stack().reset_index(drop=True).to_frame('ID')
这个方法会自动堆叠所有列的数值,忽略原有的层级索引,直接得到目标格式。
方法3:使用melt()(适合需要灵活控制列的场景)
通过melt将多列转为「变量-值」格式,再提取值列并重命名:
result = test.melt(value_vars=test.columns, value_name='ID').drop('variable', axis=1).reset_index(drop=True)
以上三种方法都能满足你的需求,可根据个人习惯选择。
内容的提问来源于stack exchange,提问作者Rice
相关产品推荐
相关产品推荐

