详解pandas赋值失败问题解决

七月
七月
发布时间:2026-10-14| 4人浏览过
原创

本文深入解析pandas中DataFrame赋值失败的常见场景,涵盖整列直接赋值、单值与多值非整列赋值以及跨列赋值的正确做法。重点阐述使用.loc进行条件赋值时因形状不匹配导致的报错原因,并提供通过.values.tolist()获取列表的正确实现方式,帮助开发者避免常见陷阱。

pandas整列赋值方法

一、pandas对整列赋值

这种情况相对常规,通常可以直接进行赋值操作:


x = pd.DataFrame({'A': ['1', '2', '3', None, None],
      'B': ['4', '5', '6', '7', None]})
x['A'] = ['10', '11', '12', '13', '14']

pandas非整列赋值陷阱与解决

二、pandas对非整列赋值

1、用单个值赋值


x = pd.DataFrame({'A': ['1', '2', '3', None, None],
      'B': ['4', '5', '6', '7', None]})
index = x['A'].isna()
x[index]['A'] = 100

结果可能令人困惑,赋值操作看似未生效。

2、用多个值赋值


x = pd.DataFrame({'A': ['1', '2', '3', None, None],
      'B': ['4', '5', '6', '7', None]})
index = x['A'].isna()
x[index] = [100, 200]


此时会触发报错,系统提示建议使用.loc进行赋值,我们可以尝试这种方法。

3、.loc赋值


x = pd.DataFrame({'A': ['1', '2', '3', None, None],
      'B': ['4', '5', '6', '7', None]})
index = x['A'].isna()
x.loc[index, ['A']] = [100, 200]

尽管使用了.loc,仍然出现报错,这通常是由于数据形状(shape)不匹配所致。


x.loc[index, ['A']] = [['100'], ['200']]

pandas跨列赋值的正确实践

三、用数据的另外一列赋值

1、错误方式


x = pd.DataFrame({'A': ['1', '2', '3', '', ''],
        'B': ['4', '5', '6', '7', '']})
index = x['A'].isna()
x.loc[index, ['A']] = x.loc[index, ['B']] 

正确方式


x = pd.DataFrame({'A': ['1', '2', '3', '', ''],
        'B': ['4', '5', '6', '7', '']})
index = x['A'].isna()
x.loc[index, ['A']] = x.loc[index, ['B']].copy().values.tolist()

至此,关于pandas赋值失败问题的详细解析已介绍完毕。如需了解更多相关pandas赋值失败的内容,建议查阅本站历史文章或继续浏览后续教程,感谢大家的支持!

相关标签:

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

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 算法库。