我试图比较Pandas中两个列的股票价格数据,但一直收到这个错误.

‘系列的真值不明确.请使用a.Empty、a.bool()、a.Item()、a.any()或a.all().’

for n in df['labels']:
    if df['Open'] > df['Close']:
          df['labels'] = 'green'
    else:
        df['labels'] = 'red'

问题是这行-‘f df[’Open‘]>df[’Close‘]’

try 使用.gt()方法,但不起作用--有什么建议吗?

推荐答案

您正在比较两个完整的列,这是不明确的.

相反,您要做的是比较数据帧中每一行的值.

示例df:

df = pd.DataFrame(columns=['open', 'close'], data=[[100, 105], [200, 195], [300, 301], [400, 404], [500, 499]])

例如,您可以像这样使用.itertuples():

for row in df.itertuples():
    print(row.close > row.open)

然而,DataFrame的优点在于,您可以同时计算多个值,并且通常不希望遍历您的数据.

df['labels'] = df.apply(lambda row: 'green' if row["close"] >= row["open"] else 'red', axis=1)

在这里我创建了一个新的çolumn‘Labels’,并根据OPEN和CLOSE的值将值设置为‘green’或‘red

最终的df如下所示:

   open  close labels
0   100    105  green
1   200    195    red
2   300    301  green
3   400    404  green
4   500    499    red

第三个选项是使用np.where,如下所示:

import numpy as np
df['labels'] = np.where(df["close"] >= df["open"], 'green', 'red')

Python相关问答推荐

将特定列信息移动到当前行下的新行

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

根据二元组列表在pandas中创建新列

Python虚拟环境的轻量级使用

OR—Tools中CP—SAT求解器的IntVar设置值

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

如何在Python中使用另一个数据框更改列值(列表)

基于行条件计算(pandas)

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

在matplotlib中使用不同大小的标记顶部添加批注

Django Table—如果项目是唯一的,则单行

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

极柱内丢失类型信息""

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,

如何在Python中创建仅包含完整天数的月份的列表

.awk文件可以使用子进程执行吗?

有没有一种方法可以根据不同索引集的数组从2D数组的对称子矩阵高效地构造3D数组?

了解如何让库认识到我具有所需的依赖项

as_index=False groupBy不支持count