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

如何用pandas的.loc将列表值赋值给DataFrame指定列单元格

解决方案

你可以通过以下步骤实现需求:

  1. 定位B列值为1的起始索引
  2. 从该索引开始,选取连续N个行(N为list_values的长度)
  3. 给这些行的新列D赋值,其余行保留NaN

具体代码如下:

import pandas as pd

data = {'A': [1, 2, 3, 4, 5, 6], 'B':[1, 0, 0, 0, 0, 0]}
df = pd.DataFrame(data)
list_values = ['A', 'B', 'C']

# 获取B=1的起始索引(取第一个匹配项)
start_idx = df[df['B'] == 1].index[0]
# 计算需要赋值的索引范围
end_idx = start_idx + len(list_values)
# 初始化D列为空值
df['D'] = pd.NA
# 给目标索引范围赋值
df.loc[start_idx:end_idx-1, 'D'] = list_values

print(df)

运行后输出结果:

A  B     D
0  1  1     A
1  2  0     B
2  3  0     C
3  4  0  <NA>
4  5  0  <NA>
5  6  0  <NA>

原代码报错原因

你之前的代码中,start_index = df[df['B'] == 1].index得到的是仅包含索引0的单个索引对象,但list_values有3个元素,赋值时两边长度不匹配,因此抛出ValueError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:03:27