根据另一列(浮点数)更改列(分类)值

时间:2019-09-17 23:20:59

标签: python pandas if-statement replace

我尝试执行此代码以将所有df_dash ['aoh'] <= 262替换为备用

if df_dash['aoh'] <= 262:
   df_dash['category'] = 'standby'

但是我遇到此错误,而且我似乎找不到找到正确结果的方法。

Traceback (most recent call last): File "<input>", line 1, in <module> File "/Users/jacob/anaconda3/envs/MERS/lib/python3.7/site-packages/pandas/core/generic.py", line 1555, in __nonzero__ self.__class__.__name__ ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我已经在其他线程中阅读了有关此错误的信息,但似乎无法找到针对此特定情况的解决方案。

我也尝试使用它

df_dash['category'] = np.where(df_dash['aoh'] <= 262, 'standby', df['category'])

但是,我得到

ValueError: operands could not be broadcast together with shapes (458,) () (4173,) 

希望有人可以提供帮助

3 个答案:

答案 0 :(得分:0)

 df_dash['category'][df_dash['aoh'] <= 262] = 'standby'

答案 1 :(得分:0)

您可以将locboolean indexing结合使用:

df_dash.loc[df_dash['aoh'] <= 262,'category'] = 'standby'

答案 2 :(得分:0)

一无所有-您的np.where解决方案应该可以工作,但是我认为您在函数调用的第二部分中使用了df['category'],而不是df_dash['category']

看不到其余的代码,但假定数据帧的大小不同。