#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(), но лучший способ — использовать индекс как числа по умолчанию, а затем попытаться проанализировать