gpt4 book ai didi

python - 如何修复比较简单数据后生成的Python中的 'The truth value of a Series is ambiguous'

转载 作者:行者123 更新时间:2023-12-01 07:35:03 24 4
gpt4 key购买 nike

从雅虎获取比特币(BTC-USD)的数据后,我尝试创建一个新列来显示收盘价是否高于每天的开盘价。

我想要做的是创建一个列,当收盘价高于开盘价时显示 1。当条件不成立时为 0。

当我尝试比较收盘价和开盘价时,我收到下一条消息:ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

我已经尝试了几种方法来修复它(例如将数据作为 CSV 导入,而不是直接从 Yahoo 导入),但不幸的是我找不到解决方案。

下面您可以看到我正在使用的代码:

import pandas as pd
import pandas_datareader as dr
df = dr.data.get_data_yahoo('btc-usd',start = '01-01-2015', end= '31-12-2018')
df.head(2)

df['X'] = [1 if (df.loc[ei,'Close'] > df.loc[ei,'Open']) else 0 for ei in df.index] #---> The error is produced in this line of code
df.tail()

下面您可以看到错误消息:

ValueError                                Traceback (most recent call last)
<ipython-input-45-eb64775bf24f> in <module>
----> 1 df['X'] = [1 if (df.loc[ei,'Close'] > df.loc[ei,'Open']) else 0 for ei in df.index]
2 df.tail()

<ipython-input-45-eb64775bf24f> in <listcomp>(.0)
----> 1 df['X'] = [1 if (df.loc[ei,'Close'] > df.loc[ei,'Open']) else 0 for ei in df.index]
2 df.tail()

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1476 raise ValueError("The truth value of a {0} is ambiguous. "
1477 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
-> 1478 .format(self.__class__.__name__))
1479
1480 __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我想得到这个公式的结果。当收盘价 > 开盘价时为 1,当条件为 false 时为 0。

最佳答案

如果您想在关闭 > 打开时将 1 放入列中,只需使用 np.where

import numpy as np
df['X'] = np.where(df['Close']>df['Open'],1,0)

第二个解决方案可能是

df['X'] = 0
df.loc[df['Close']>df['Open'],"X"] = 1
print(df)
                 High   Low          Open       Close        Volume     Adj Close   X
Date
2014-12-31 319.089996 308.890015 311.269989 318.239990 6472822 318.239990 1
2015-01-01 321.359985 313.540009 318.239990 314.890015 4073067 314.890015 0
2015-01-02 316.399994 313.079987 314.890015 315.209991 4673971 315.209991 1
2015-01-03 315.829987 284.890015 315.209991 287.130005 14209564 287.130005 0
2015-01-04 289.940002 255.869995 287.130005 264.720001 24255392 264.720001 0

关于python - 如何修复比较简单数据后生成的Python中的 'The truth value of a Series is ambiguous',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57023563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com