Pandas新手求助:如何将第1、5、9列垂直合并至同一列?
解决Pandas单列垂直合并问题
你的核心需求是把原数据框的第1、5、9列(对应Pandas的0、4、8索引列)合并成同一列,之前的代码思路完全偏了——你切了多列的块再堆叠,还误用了横向填充的ffill(axis=1),自然达不到效果。
正确实现方式
直接提取目标单列,再用pd.concat垂直堆叠即可:
# 提取目标列:第1、5、9列(Pandas索引从0开始,对应0、4、8) target_cols = [df.iloc[:, 0], df.iloc[:, 4], df.iloc[:, 8]] # 垂直合并成一列,重置索引避免重复 merged_col = pd.concat(target_cols, axis=0).reset_index(drop=True) # 转成DataFrame(如果需要) new_df = merged_col.to_frame(name='合并后的列')
为什么你的代码不行?
- 你之前的
columns_1_to_4 = df.iloc[0:9, 0:4]是提取了前9行的前4列,不是单列,三个这样的块堆叠后是一个多行多列的DataFrame,不是你要的单列结构。 ffill(axis=1)是横向填充空值(从左到右补),和垂直合并列的需求完全无关,只会把每行的空值用左边的数值填充,根本不会帮你把列合并。
内容的提问来源于stack exchange,提问作者Ren Tremendous
相关产品推荐
相关产品推荐

