表格操作:如何将整列数据复制追加到另一列末尾并删除原列
Pandas 实现方案
核心是绕过DataFrame默认的索引对齐规则,直接做行级纵向拼接,步骤如下:
- 提取Pilot1列的全部有效值
- 过滤掉Pilot2列的空单元格内容,提取剩余有效值
- 将两段数据拼接为新的Pilot1列,直接生成单列表即可,不需要额外执行删列操作
核心实现代码:
import pandas as pd # 构造示例原始数据 df = pd.DataFrame({ 'Pilot1': ['Kevin', 'Russell', 'Max'], 'Pilot2': ['Tom', 'Richard', ''] }) # 执行列追加操作 df = pd.DataFrame({ 'Pilot1': pd.concat( [df['Pilot1'], df['Pilot2'].loc[lambda x: x != '']], ignore_index=True ) })
运行后输出结果和预期完全一致:
| Pilot1 |
|---|
| Kevin |
| Russell |
| Max |
| Tom |
| Richard |
操作注意事项:
- 不要使用pandas已废弃的
Series.append()接口,高版本会直接报错 - 必须添加
ignore_index=True参数,否则拼接后会出现重复索引,后续做数据筛选、计算时容易出异常 - 如果你的表格空值是pandas默认的
NaN/pd.NA类型,把判空条件替换为df['Pilot2'].notna()即可 - 别直接按位置给Pilot1列赋值,pandas默认会按索引对齐,会直接覆盖Pilot1列原有数据,达不到追加到末尾的效果
Excel 实现方案
如果是直接在Excel桌面端操作,不需要写公式,三步就能完成:
- 选中Pilot2列中有内容的单元格(跳过末尾空单元格),按
Ctrl+C复制 - 点击Pilot1列现有内容下方的第一个空白单元格,按
Ctrl+V粘贴 - 右键点击Pilot2列的列标题,选择「删除整列」即可
内容的提问来源于stack exchange,提问作者Kas Ac
相关产品推荐
相关产品推荐

