如何在Python中将DataFrame的real与pred列分别垂直堆叠为新列?
Python实现DataFrame列垂直堆叠的简便方法
可以用Pandas的pd.concat结合列表推导快速实现,步骤如下:
实现代码
import pandas as pd # 假设原DataFrame名为df # 生成5到100的整数序列(包含100) target_nums = range(5, 101) # 遍历每个数字,提取对应real_*和pred_*列组成子DataFrame,再垂直拼接 result_df = pd.concat( [pd.DataFrame({ 'real': df[f'real_{n}'], 'pred': df[f'pred_{n}'] }) for n in target_nums], ignore_index=True )
代码说明
target_nums = range(5, 101):生成从5到100的所有整数,确保覆盖所有对应列对- 列表推导部分:对每个数字
n,取出原DataFrame中real_n和pred_n列,组成只有real和pred两列的小型DataFrame pd.concat(..., ignore_index=True):将所有小型DataFrame垂直堆叠,并重置索引,避免索引重复
最终生成的result_df行数为96 * 15000(5到100共96个数字),和你描述的(100-5)*15000有差异,这里是因为5到100包含首尾,实际是96个数值对;若你确实需要排除100,只需将range(5, 101)改为range(5, 100)即可。
内容的提问来源于stack exchange,提问作者red_sky_red
相关产品推荐
相关产品推荐

