【问题标题】:ValueError: The truth value of a Series is ambiguous. PandasValueError:Series 的真值不明确。熊猫
【发布时间】:2020-08-03 23:41:42
【问题描述】:

我使用了以下代码:

data1['Close'].shift(freq='1d').pct_change(data1['Low'])

由于某种原因它正在返回:

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

您能否告知为什么会出现该错误?

我曾在如下数据上使用它:

                   High           Low          Open         Close    Volume  \
Date                                                                           
2018-01-02  10495.200195  10404.650391  10477.549805  10442.200195  153400.0   
2018-01-03  10503.599609  10429.549805  10482.650391  10443.200195  167300.0   
2018-01-04  10513.000000  10441.450195  10469.400391  10504.799805  174900.0   
2018-01-05  10566.099609  10520.099609  10534.250000  10558.849609  180900.0   
2018-01-08  10631.200195  10588.549805  10591.700195  10623.599609  169000.0   
                 ...           ...           ...           ...       ...   
2020-04-15   9261.200195   8874.099609   9196.400391   8925.299805  879100.0   
2020-04-16   9053.750000   8821.900391   8851.250000   8992.799805  719400.0   
2020-04-17   9324.000000   9091.349609   9323.450195   9266.750000  684200.0   
2020-04-20   9390.849609   9230.799805   9390.200195   9261.849609  726400.0   
2020-04-21   9044.400391   8909.400391   9016.950195   8942.099609       0.0   

【问题讨论】:

    标签: python-3.x pandas valueerror


    【解决方案1】:

    我相信您需要shift 计算的百分比变化:

    data1['pct'] = 1 - data1['Low'].div(data1['Close'].shift(freq='1d'))
    
    print (data1)
                        High           Low          Open         Close    Volume  \
    Date                                                                           
    2018-01-02  10495.200195  10404.650391  10477.549805  10442.200195  153400.0   
    2018-01-03  10503.599609  10429.549805  10482.650391  10443.200195  167300.0   
    2018-01-04  10513.000000  10441.450195  10469.400391  10504.799805  174900.0   
    2018-01-05  10566.099609  10520.099609  10534.250000  10558.849609  180900.0   
    2018-01-08  10631.200195  10588.549805  10591.700195  10623.599609  169000.0   
    2020-04-15   9261.200195   8874.099609   9196.400391   8925.299805  879100.0   
    2020-04-16   9053.750000   8821.900391   8851.250000   8992.799805  719400.0   
    2020-04-17   9324.000000   9091.349609   9323.450195   9266.750000  684200.0   
    2020-04-20   9390.849609   9230.799805   9390.200195   9261.849609  726400.0   
    2020-04-21   9044.400391   8909.400391   9016.950195   8942.099609       0.0   
    
                     pct  
    Date                  
    2018-01-02       NaN  
    2018-01-03  0.001211  
    2018-01-04  0.000168  
    2018-01-05 -0.001456  
    2018-01-08       NaN  
    2020-04-15       NaN  
    2020-04-16  0.011585  
    2020-04-17 -0.010959  
    2020-04-20       NaN  
    2020-04-21  0.038054  
    

    或者:

    s = data1['Close'].shift(freq='1d')
    data1['pct'] = data1['Low'].sub(s).div(s)
    print (data1)
                        High           Low          Open         Close    Volume  \
    Date                                                                           
    2018-01-02  10495.200195  10404.650391  10477.549805  10442.200195  153400.0   
    2018-01-03  10503.599609  10429.549805  10482.650391  10443.200195  167300.0   
    2018-01-04  10513.000000  10441.450195  10469.400391  10504.799805  174900.0   
    2018-01-05  10566.099609  10520.099609  10534.250000  10558.849609  180900.0   
    2018-01-08  10631.200195  10588.549805  10591.700195  10623.599609  169000.0   
    2020-04-15   9261.200195   8874.099609   9196.400391   8925.299805  879100.0   
    2020-04-16   9053.750000   8821.900391   8851.250000   8992.799805  719400.0   
    2020-04-17   9324.000000   9091.349609   9323.450195   9266.750000  684200.0   
    2020-04-20   9390.849609   9230.799805   9390.200195   9261.849609  726400.0   
    2020-04-21   9044.400391   8909.400391   9016.950195   8942.099609       0.0   
    
                     pct  
    Date                  
    2018-01-02       NaN  
    2018-01-03 -0.001211  
    2018-01-04 -0.000168  
    2018-01-05  0.001456  
    2018-01-08       NaN  
    2020-04-15       NaN  
    2020-04-16 -0.011585  
    2020-04-17  0.010959  
    2020-04-20       NaN  
    2020-04-21 -0.038054  
    

    【讨论】:

    • 我正在使用data1['ret'] = (1 - data1['Low'].div(data1['Close'].shift(freq='1d'))) *100。感谢您的帮助
    猜你喜欢
    • 2021-04-07
    • 2021-06-02
    • 2021-09-10
    • 2018-07-05
    • 2018-06-14
    • 2016-07-11
    • 2017-12-22
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多