如何根据条件修改Pandas列值?代码为何将整行设为4.0?
问题原因及修正方案
核心问题
你写的代码e.loc[(e.iloc[:,-1]<1.01) & (e.iloc[:,-1]>0.99)]=4.0只指定了行的筛选条件,没有明确限定要修改的列,所以Pandas会把符合条件的整行所有元素都设为4.0,而非仅修改最后一列。
修正方法
要只修改最后一列,需要在loc中同时指定行条件和目标列,以下是几种可行写法:
- 用
e.columns[-1]定位最后一列:
e.loc[(e.iloc[:,-1]<1.01) & (e.iloc[:,-1]>0.99), e.columns[-1]] = 4.0
- 直接用最后一列的默认列名(你的DataFrame列名是0、1、2,最后一列是2):
e.loc[(e[2]<1.01) & (e[2]>0.99), 2] = 4.0
- 用
between简化范围判断(inclusive='neither'表示不包含边界值,和原逻辑一致):
e.loc[e.iloc[:,-1].between(0.99, 1.01, inclusive='neither'), e.columns[-1]] = 4.0
额外注意点
你的代码里pd.dataframe(d)存在拼写错误,正确写法是pd.DataFrame(d)(首字母D大写),否则会触发AttributeError。
内容的提问来源于stack exchange,提问作者ewr3243
相关产品推荐
相关产品推荐

