python - 使用 if else 使用 pandas 操作数据框时出现值错误?
问题描述
这是我编写的代码,df 是数据框。我正在使用python3,我是熊猫新手,我尝试过按位运算符以及关键字和或
if((df['Day_Perc_Change']>=-0.5) & (df['Day_Perc_Change']<=0.5)):
df['Trend']="Slight or No Change"
elif((df['Day_Perc_Change']>=0.5) & (df['Day_Perc_Change']<=1)):
df['Trend']="Slight Positive"
elif((df['Day_Perc_Change']>=-1) & (df['Day_Perc_Change']<=-0.5)):
df['Trend']="Slight Negative"
elif((df['Day_Perc_Change']>=1) & (df['Day_Perc_Change']<=3)):
df['Trend']="Positive"
elif((df['Day_Perc_Change']>=-3) & (df['Day_Perc_Change']<=-1)):
df['Trend']="Negative"
elif((df['Day_Perc_Change']>=3) & (df['Day_Perc_Change']<=7)):
df['Trend']='Among top gainers'
别的:
df['Trend']="Bear drop"
}
**这是我得到的错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). I have used both and as well as | but it is working. Can anyone help me out? **
解决方案
BAM, np.where()
,它也是矢量化和高性能的。
df['Trend'] = ''
df['Trend'] = np.where((df['Day_Perc_Change']>=-0.5) & (df['Day_Perc_Change']<=0.5), "Slight or No Change", df['Trend'])
df['Trend'] = np.where((df['Day_Perc_Change']>=0.5) & (df['Day_Perc_Change']<=1), "Slight Positive", df['Trend'])
df['Trend'] = np.where((df['Day_Perc_Change']>=-1) & (df['Day_Perc_Change']<=-0.5), "Slight Negative", df['Trend'])
df['Trend'] = np.where((df['Day_Perc_Change']>=1) & (df['Day_Perc_Change']<=3), "Positive", df['Trend'])
df['Trend'] = np.where((df['Day_Perc_Change']>=-3) & (df['Day_Perc_Change']<=-1), "Negative", df['Trend'])
df['Trend'] = np.where((df['Day_Perc_Change']>=3) & (df['Day_Perc_Change']<=7), "Among top gainers", df['Trend'])
推荐阅读
- reactjs - 反应在数组中渲染图像数组
- javascript - 在没有初始属性的情况下更新处于 React 状态的对象的方法是什么?
- postgresql - 如何将表从 PostgreSQL 导入 SAP Hana?
- c# - Azure 逻辑应用在触发时触发两次
- javascript - 如何在reactjs中创建一个调用标签的函数?
- php - 运行php脚本并自动通过表单上传文件?
- excel - VBA将数据透视表数据复制到另一个工作表+更改标题
- javascript - Vuetify v-data-table 未显示来自 javascript api fetch 的结果
- jquery - 基于两个数据库字段返回主要字段的 JQuery 自动编译
- python - 过滤在给定列中具有超过 x 数量的 nan 值的用户