Pandas中如何将多列两两追加到A、B两列下生成2列72行数据
问题原因
你使用append时出现大量NaN的核心原因是,待拼接的子DataFrame列名和初始的A、B列名不匹配,Pandas拼接时默认按列名对齐,不存在的列就会填充空值。
解决方案
你可以选择以下任意一种方式实现需求:
方案1:numpy变形实现(最高效,代码量最少)
直接对原DataFrame的底层数值做维度变形,一步得到目标结构:
import numpy as np import pandas as pd # 12*12的数组变形为72行2列,再封装为DataFrame result = pd.DataFrame(dffvstats.values.reshape(-1, 2), columns=['A', 'B'])
方案2:分组拼接实现(可读性更强,可灵活调整分组规则)
将原表按每2列分为一组,统一列名后纵向拼接:
# 按步长2拆分所有列为6个两列的子表 col_groups = [dffvstats.iloc[:, i:i+2] for i in range(0, 12, 2)] # 所有子表统一列名后拼接,ignore_index=True重置行索引 result = pd.concat( [group.set_axis(['A', 'B'], axis=1) for group in col_groups], ignore_index=True )
注意事项
- 旧版Pandas的
append方法已被弃用,后续版本会移除,所有纵向拼接场景都推荐使用pd.concat - 如果需要保留原始行的索引标记,可以去掉
ignore_index=True参数
内容的提问来源于stack exchange,提问作者Zwink
相关产品推荐
相关产品推荐

