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

基于条件修改DataFrame的Census列?解决np.where报错问题

解决方法

错误原因

你误用了np.where的调用方式:np.where是函数,必须用圆括号()传递参数,而你用了方括号[](仅用于数组/序列的下标访问),因此触发TypeError: 'function' object is not subscriptable。

正确实现方式

以下两种方法都适合数百万行的大数据量(均为矢量化操作,效率远高于循环):

方法1:修正np.where的调用

import pandas as pd
import numpy as np

# 正确构建示例DataFrame
Population = [34,2,1,4542,422,122,55,7876,45,23,1,3]
Census = [12,43,14,6545,63,123,654,33,123,12,99,88]
a = pd.DataFrame({'Population': Population, 'Census': Census})

# 用圆括号调用np.where,完成条件赋值
a['Census'] = np.where(a['Population'] < a['Census'], a['Population'], 1)

方法2:用pandas.loc直接定位修改

这种方式逻辑更直观,分两步完成赋值:

# 第一步:将满足条件的行的Census列替换为Population
a.loc[a['Population'] < a['Census'], 'Census'] = a['Population']
# 第二步:将不满足条件的行的Census列设为1
a.loc[a['Population'] >= a['Census'], 'Census'] = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 23:25:05