df.where没有按预期工作

时间:2018-03-13 20:10:45

标签: python python-3.x pandas

我尝试使用以下方法创建标志变量:

df.where(((df['MOSL_Rating'] == 'Highly Effective') & (df['MOTP_Rating'] == 'Developing')) | ((df['MOSL_Rating'] == 'Highly Effective') & (df['MOTP_Rating'] == 'Ineffective')) | ((df['MOSL_Rating'] == 'Effective') & (df['MOTP_Rating'] == 'Ineffective')) | ((df['MOSL_Rating'] == 'Ineffective') & (df['MOTP_Rating'] == 'Highly Effective')) | ((df['MOSL_Rating'] == 'Ineffective') & (df['MOTP_Rating'] == 'Effective')) | ((df['MOSL_Rating'] == 'Developing') & (df['MOTP_Rating'] == 'Highly Effective')), df['disp_rating'], 1, axis=1)

但这会返回ValueError: For argument "inplace" expected type bool, received type int.

如果我将代码从df['disp_rating'], 1, axis=1更改为df['disp_rating'], True, axis=1,则会返回 TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value

我也试过np.where但是也遇到了类似的错误。

我在这里明显遗漏了一些东西。有一个更好的方法吗?

编辑:我也读过这篇文章,因为它被标记为可能的副本。但是,我不明白答案是如何解决我的问题的,因为这是关于比较2个数据帧,并且根本没有讨论如何使用它来使用来自单个数据帧的数据来创建新变量。

0 个答案:

没有答案