使用pandas的df.loc按等差数列修改列值时遇语法错误求助
问题修正方案
原代码存在两处核心问题:
- 混用了R语言的列引用语法
df$age,Pandas中需用df.age或df['age'] - 赋值时混合字符串(
.4、1)与数值类型,会导致alpha列类型混乱
修正后的代码如下:
import pandas as pd data = {"age":[2,3,2,5,9,12,20,43,55,60],'alpha' : [0,0,0,0,0,0,0,0,0,0]} df = pd.DataFrame(data) # 年龄<=4时,alpha设为0.4(统一用数值类型) df.loc[df.age <= 4, "alpha"] = 0.4 # 年龄在5-20区间时,按等差数列公式计算 df.loc[(df.age >= 5) & (df.age <= 20), "alpha"] = 0.4 + (1 - 0.4)*((df.age - 4)/(20 - 4)) # 年龄>20时,alpha设为1(统一用数值类型) df.loc[df.age > 20, "alpha"] = 1
关键修正点说明:
- 替换
df$age为Pandas支持的df.age,解决语法错误 - 将字符串形式的
.4、1改为数值0.4、1,保证alpha列统一为数值类型,避免后续计算异常 - 简化条件判断中的冗余括号,让代码更简洁
运行后得到的结果:
age alpha 0 2 0.400000 1 3 0.400000 2 2 0.400000 3 5 0.437500 4 9 0.550000 5 12 0.625000 6 20 1.000000 7 43 1.000000 8 55 1.000000 9 60 1.000000
内容的提问来源于stack exchange,提问作者mehmo
相关产品推荐
相关产品推荐

