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

使用pandas的loc方法替换值时出现‘str’无‘loc’属性错误

问题分析与解决方案

嘿,我一眼就瞅出问题所在啦!你碰到的'str' has no attribute 'loc'错误,根源出在这行代码:

c_df = c_df.loc[c_df['Country'] == ('Korea, Rep.')] = 'South Korea'

这行代码犯了一个典型的赋值逻辑错误——你把两次赋值操作硬凑在了同一行,最终c_df被直接赋值成了字符串'South Korea',而不再是原来的DataFrame对象。当后续操作(哪怕是你现在代码里没写的)再尝试用.loc操作c_df时,自然会报错,因为字符串类型根本没有loc这个属性。

正确的修改方式

要修改DataFrame中特定行的Country列值,你只需要通过.loc精准定位后直接赋值就行,不需要把结果再重新赋值给c_df:

# 定位符合条件的行,修改Country列的值
c_df.loc[c_df['Country'] == 'Korea, Rep.', 'Country'] = 'South Korea'

这里的.loc用法是df.loc[行筛选条件, 目标列名] = 新值,能精准定位到需要修改的单元格,完全不会改变整个DataFrame的类型。

修正后的完整代码

import pandas as pd
df = pd.read_excel("Energy Indicators.xls", header=None, footer=None)
c_df = df.copy()
c_df = c_df.iloc[18:245, 2:]
c_df = c_df.rename(columns={2: 'Country', 3: 'Energy Supply', 4:'Energy Supply per Capita', 5:'% Renewable'})
c_df['Energy Supply'] = c_df['Energy Supply'].apply(lambda x: x*1000000)
# 修正后的赋值语句
c_df.loc[c_df['Country'] == 'Korea, Rep.', 'Country'] = 'South Korea'
print(c_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:45:32