Ошибка типа: сложение / вычитание целых чисел и целых массивов с меткой времени больше не поддерживается

#python #pandas

#python #pandas

Вопрос:

У меня проблема с pandas, особенно при перемещении в dataframe по индексным номерам.

Это мой код:

 def wolumen(data, swieca):
    list_of_volumen = []
    for k in range(1, 30):
        list_of_volumen.append(data['Volume'][swieca-k])
    print(list_of_volumen)

candle = 0 
hammer = 0

for i in data_frame.index:
    candle =1
    if data_frame["Close"][i] < data_frame["Open"][i]:
        body = 3 * (data_frame["Open"][i] - data_frame["Close"][i])
        down_shadow = data_frame["Close"][i] - data_frame["Low"][i]
        if body < down_shadow:
            up_shadow = data_frame["High"][i] - data_frame["Open"][i]
            if body > up_shadow:
                hammer =1
                print("Hammer!!!")
                print(data_frame.loc[i])
                wolumen(data_frame, i)
 

Я хочу проанализировать некоторые биржевые данные с помощью pandas и yfinance, мой data_frame выглядит так:

                           |  Open    High    Low   Close  Adj Close  Volume
Datetime                  |                                                 
2020-01-10 09:00:00 01:00 |  9.950  10.075  9.900  10.030     10.030  767203
 

Я не могу добавить объем строки к этому lis_of_volumen

Полная ошибка выглядит так:

 Traceback (most recent call last):
  File "aaa.py", line 45, in <module>
    wolumen(data_frame, i)
  File "aaa.py", line 28, in wolumen
    list_of_volumen.append(data['Volume'][swieca-k])
  File "pandas_libstslibstimestamps.pyx", line 343, in pandas._libs.tslibs.timestamps._Timestamp.__sub__
  File "pandas_libstslibstimestamps.pyx", line 320, in pandas._libs.tslibs.timestamps._Timestamp.__add__
TypeError: Addition/subtraction of integers and integer-arrays with Timestamp is no longer supported.  Instead of adding/subtracting `n`, use `n * obj.freq`
 

Ответ №1:

Тогда это невозможно с тем, что вы делаете, потому что вы напрямую выполняете операцию с меткой времени list_of_volumen.append(data[‘Volume’][swieca-k])

Комментарии:

1. итак, я должен сначала добавить столбец индекса в этот фрейм данных или могу сделать это другим способом?

2. Да, безусловно, вы можете добавить любой тип индекса, отличный от datetime, или вы можете преобразовать свою временную метку с помощью to_ordinal(), но лучший способ — использовать индекс как числа по умолчанию, а затем попытаться проанализировать