在Pandas中添加计算列

JD2*_*775 7 python pandas

我有一个包含10列的数据框.我想添加一个新列'age_bmi',它应该是一个计算列,乘以'age'*'bmi'.年龄是INT,bmi是FLOAT.

然后创建具有11列的新数据帧.

我正在做的事情不太对劲.我认为这是一个语法问题.有任何想法吗?

谢谢

df2['age_bmi'] = df(['age'] * ['bmi'])
print(df2)
Run Code Online (Sandbox Code Playgroud)

Zer*_*ero 17

正如 Cory 所指出的,您将数据帧作为函数调用,这不会像您预期的那样工作。这里有 4 种方法可以多列两列,在大多数情况下,您会使用第一种方法。

In [299]: df['age_bmi'] = df.age * df.bmi
Run Code Online (Sandbox Code Playgroud)

或者,

In [300]: df['age_bmi'] = df.eval('age*bmi')
Run Code Online (Sandbox Code Playgroud)

或者,

In [301]: df['age_bmi'] = pd.eval('df.age*df.bmi')
Run Code Online (Sandbox Code Playgroud)

或者,

In [302]: df['age_bmi'] = df.age.mul(df.bmi)
Run Code Online (Sandbox Code Playgroud)


Cor*_*den 6

试试df2['age_bmi'] = df.age * df.bmi.

当你需要获取列的值时,你试图将数据帧作为一个函数调用,你可以通过键访问它,如字典或属性,如果它是一个小写名称,没有与构建不匹配的空格-in DataFrame方法.

有人在前几天的评论中将此链接起来,这非常棒.我建议给它一块手表,即使你不做练习:https://www.youtube.com/watch?v = 5JnMutdy6Fw

  • 这要么给我一个错误,提示“df2”未定义,要么如果我使用“df”,它会显示:“SettingWithCopyWarning:正在尝试在 DataFrame 中的切片副本上设置一个值。” 尝试使用 .loc[row_indexer,col_indexer] = value 请参阅文档中的警告:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a -复制 (2认同)