Python DataFrame指定位置添加列:reindex方法详解
本文介绍如何在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指定位置添加一列或多列方法的完整分享,希望能为各位读者提供有价值的参考。欢迎大家继续支持本站内容。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









