首页 > 解决方案 > 如何创建一个布尔变量来确定第 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

标签: python

解决方案


而不是df['bool'].append("Down")使用,df['bool'] = "Down"因为您已将其初始化为字符串而不是数组。


推荐阅读