You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过行列索引向Pandas DataFrame插入值?

关于Pandas用行/列索引赋值及列表展开的问题

首先明确:完全可以通过行索引和列索引给DataFrame插入值,你遇到的问题是用了错误的索引方式。

你写的new_df.iloc[i][j]属于链式索引,这种写法会返回DataFrame的临时视图而非原始数据的直接引用,赋值操作只会修改这个临时视图,不会真正作用到new_df上。正确的做法是用iloc的二维索引语法:new_df.iloc[i, j],直接定位到行i列j的位置赋值。

不过针对你「把单列列表展开为多列」的需求,完全没必要写循环,Pandas原生就有高效的实现方式:

  • 假设你的原DataFrame单列名为col,可以直接把列里的列表转成新DataFrame:
    new_df = pd.DataFrame(df['col'].tolist())
    
  • 或者用apply配合pd.Series:
    new_df = df['col'].apply(pd.Series)
    

这两种方法都会自动把每行的列表拆分成对应列,而且比循环快得多,尤其是数据量大的时候。

如果一定要用循环实现(不推荐),修正后的代码应该是这样:

# 先确保new_df的结构正确,行数和df一致,列数等于列表的长度
new_df = pd.DataFrame(index=df.index, columns=range(len(df.iloc[0, 0])))
for i in range(len(df)):
    row_list = df.iloc[i, 0]  # 取第i行的列表
    for j in range(len(row_list)):
        new_df.iloc[i, j] = row_list[j]

内容的提问来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:40:52