python - 如何创建一个布尔变量来确定第 i 天的价格是大于还是小于当天 (i-1)?
问题描述
我对python比较陌生。
我试图在我的数据集中创建一个新的布尔变量,如果第 i 天的价格小于当天的价格 (i-1),则返回下降,否则返回。
df['bool'] = ''
for i in range(len(df)):
if df.iloc[i,10] >= df.iloc[i+1,10]:
df['bool'].append("Down")
else:
df['bool'].append("Up")
(10 是包含价格的列)。
它返回此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-b7a9552986fd> in <module>
4 df['bool'].append("Down")
5 else:
----> 6 df['bool'].append("Up")
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/series.py in append(self, to_append,
ignore_index, verify_integrity)
2699 raise TypeError(msg)
2700 return concat(
-> 2701 to_concat, ignore_index=ignore_index, verify_integrity=verify_integrity
2702 )
2703
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/concat.py in concat(objs, axis,
join, ignore_index, keys, levels, names, verify_integrity, sort, copy)
282 verify_integrity=verify_integrity,
283 copy=copy,
--> 284 sort=sort,
285 )
286
~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/concat.py in __init__(self, objs,
axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort)
357 "only Series and DataFrame objs are valid"
358 )
--> 359 raise TypeError(msg)
360
361 # consolidate
TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are
valid
解决方案
而不是df['bool'].append("Down")
使用,df['bool'] = "Down"
因为您已将其初始化为字符串而不是数组。
推荐阅读
- node.js - DiscordAPIError:缺少权限 - 机器人崩溃而不是给出错误消息
- azure - 调用外部 API:将集成测试移动到 docker 容器后随机变慢
- r - r中的长格式data.table中的id填充变量单元格
- javascript - Panresponder 自定义起始位置
- vue.js - VUE 3 dragenter 和 dragleave 在子元素上被错误地调用
- python - Discord.py 我应该使用 aiomysql 或 mysql-connector 哪个模块?
- javascript - 无法设置 # 的属性开始
只有一个吸气剂 - visual-studio - 如何使用 EV 代码签名令牌对使用 VS“创建应用程序包”创建的 .msix 包进行签名
- javascript - 在 JavaScript 中实现多个构造函数
- python - 如何用某些字符python数据框替换列的开头和结尾