pd.concat列名不变
时间: 2025-04-27 09:30:13 浏览: 21
### 如何在使用 Pandas `concat` 时保持原有列名
当使用 `pd.concat()` 函数连接多个 DataFrame 对象时,默认情况下会保留原始的列名。然而,如果不同 DataFrame 中存在相同名称的列,则这些列会被直接拼接在一起而不会重命名。
为了确保在连接过程中不改变任何现有的列名,并且处理可能存在的同名列情况,可以采取如下措施:
- **检查并统一列名**:在执行连接操作之前确认所有待连接的数据框具有唯一的列标签。
- **设置参数 `join='outer'` 和 `ignore_index=False`**:这能保证即使索引不同也能正确合并,并维持原有序号而不重新编号[^1]。
下面是一个具体的例子展示如何实现这一点:
```python
import pandas as pd
# 创建两个示例数据帧
df1 = pd.DataFrame([
["张三", 28],
["李四", 32],
["王二", 19]
], columns=['name', 'age'], index=['no_001', 'no_002', 'no_003'])
df2 = pd.DataFrame([
["李四", 32, 'A'],
["王二", 19, 'B']
], columns=['name', 'age', 'level'], index=['no_004', 'no_005'])
# 使用 concat 进行纵向堆叠(axis=0),并且指定 join='outer'
result_df = pd.concat([df1, df2], axis=0, join='outer')
print(result_df)
```
上述代码片段展示了通过 `pd.concat()` 方法沿垂直方向(即按照行)将两个 DataFrames 合并起来的方式。这里选择了外连接 (`join='outer'`) 来确保所有的行都被包含进来;同时由于没有更改默认的 `ignore_index=True` 参数设定,所以最终得到的结果表中的索引将会被重置为连续整数序列[^4]。
需要注意的是,在这个特定的例子中,虽然我们希望保持原来的列名不变,但由于第二个 DataFrame 包含了一个额外的新列 `'level'` ,因此它也会自然地成为结果集中的一部分。对于那些只存在于其中一个输入 DataFrame 的列来说,它们对应的缺失值位置将以 NaN 表示。
阅读全文
相关推荐



















