如何用iloc为无表头的现有DataFrame添加与第二列值相同的第三列?
可行实现方案
首先确认原始DataFrame的结构:
import pandas as pd df = pd.DataFrame([*zip([1,2,3],[4,5,6])])
此时df的列为0和1,我们要创建列2,其值与列1(通过iloc[:,1]定位)完全一致。
方案1:直接赋值(最简洁直观)
直接通过列名赋值,右侧用iloc定位第二列数据:
df[2] = df.iloc[:, 1]
执行后df会新增列2,每一行的值和对应行的列1完全相同。
方案2:使用assign方法(适合链式操作)
如果需要保持链式调用的风格,可以用assign方法创建新列,同样通过iloc获取源数据:
df = df.assign(**{2: df.iloc[:, 1]})
这里用字典解包的方式指定新列名为2,赋值为iloc[:,1]的结果,返回新的DataFrame(也可直接覆盖原df)。
方案3:分步插入并赋值
如果需要拆分操作步骤,可以先插入空列,再用iloc完成赋值:
# 插入空列到位置2(即第三列) df.insert(2, 2, value=None) # 用iloc分别定位目标列和源列完成赋值 df.iloc[:, 2] = df.iloc[:, 1]
这个方案适合需要明确控制列插入位置的场景。
内容的提问来源于stack exchange,提问作者AKS
相关产品推荐
相关产品推荐

