Python DataFrame指定位置添加列:reindex方法详解

小林子
小林子
发布时间:2026-10-13| 6人浏览过
原创

本文介绍如何在Python Pandas中向DataFrame指定位置添加列。对比直接赋值和concat()只能在末尾添加的局限,重点讲解利用reindex()方法通过columns参数控制列顺序,并使用fill_value指定新列值,实现灵活插入单列或多列。

针对如何在DataFrame中任意指定位置添加列的问题,许多开发者可能感到困惑。本文将介绍一种操作极为简便的实现方式。

在此之前,部分读者可能已经掌握基础的添加列方法,具体实现如下:

import pandas as pd
 
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature['c']='1'
print(feature.head())

采用上述方式生成的数据结果如下:

     a     b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
     a     b c
0 4.459256 8.225418 1
1 0.043276 6.307400 1
2 6.997162 9.313393 1
3 4.754832 9.260378 1
4 8.661904 9.767977 1

此外,也有开发者会考虑使用concat()函数(关于该函数的详细用法,可参考博文《在Pandas中DataFrame数据合并、连接(concat、merge、join)的实例》),示例代码如下:

import pandas as pd
 
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature = pd.concat([feature, pd.DataFrame(columns=list('c'))])
print(feature.head())

通过concat()函数处理后的结果如下:

     a     b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
     a     b  c
0 4.459256 8.225418 NaN
1 0.043276 6.307400 NaN
2 6.997162 9.313393 NaN
3 4.754832 9.260378 NaN
4 8.661904 9.767977 NaN

上述两种常规方法存在一个共同局限:它们仅支持在DataFrame的末尾(即最后一列之后)追加新列。然而在实际应用场景中,往往需要在DataFrame的第一列或中间特定位置插入新列。针对这一需求,是否存在指定位置添加列的方案?答案是肯定的,这正是本文开头所提及的高效方法。

具体实现方式如下:

import pandas as pd
 
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature = feature.reindex(columns=list('cab'), fill_value=1)
print(feature.head())

上述代码中调用了reindex()方法。该方法不仅支持添加单列或多列数据,还能精确指定列的位置,甚至可对现有列进行重新排序。关键在于columns参数,它用于控制列的排列顺序。例如代码中将新列c插入到a和b之前,使得c成为新数据框的第一列。同时,fill_value参数用于指定新列的填充值,处理结果如下:

     a     b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
  c     a     b
0 1 4.459256 8.225418
1 1 0.043276 6.307400
2 1 6.997162 9.313393
3 1 4.754832 9.260378
4 1 8.661904 9.767977

值得注意的是,reindex()方法同样支持一次性添加多列(concat()函数也具备此能力,且用法与reindex()类似),具体示例如下:

import pandas as pd
 
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature = feature.reindex(columns=list('cabd'), fill_value=1)
print(feature.head())

在此示例中,我们同时添加了c和d两列,最终结果如下:

     a     b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
  c     a     b d
0 1 4.459256 8.225418 1
1 1 0.043276 6.307400 1
2 1 6.997162 9.313393 1
3 1 4.754832 9.260378 1
4 1 8.661904 9.767977 1

如果在实际操作过程中遇到任何问题,欢迎在评论区留言反馈,以便共同排查解决。

以上就是关于使用Python向DataFrame指定位置添加一列或多列方法的完整分享,希望能为各位读者提供有价值的参考。欢迎大家继续支持本站内容。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。