ValueError: час должен быть в 0..23 pandas.to_sql () - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть этот код и работает на моем другом Mac, когда я перешел на новый, я начинаю видеть эту проблему, они имеют одинаковый часовой пояс, и я использую ту же версию Python, копая немного я не сделалНе могу найти полезных советов, как это исправить, поскольку я вижу, что данные выглядят нормально, но по какой-то причине pandas.to_sql () жалуется на это:

Обновление:

  • Тестирование с Ubuntu Xenial - Python3.5 - Работает
  • Mac High Sierra 10.13.6 - Python3.7 - Не работает
  • Mac High Sierra 10.13.5 - Python3.7 - Работа

Обработки выполнялись с помощью файла needs.txt.

Пример моих текущих данных:

0      2017-09-13 10:05:00.009
1      2017-09-13 10:05:00.009
2      2017-09-13 10:05:00.009
3      2017-09-13 10:05:00.009
4      2017-09-13 10:05:00.009
5      2017-09-13 10:05:00.009
6      2017-09-13 10:05:00.009

А вот мой пример кода:

def RetrieveData(filename=None, papel=None):

    df = pd.read_csv("%s" %(filename), header=None, delimiter="\;",
                skiprows=1, engine='python',
                names=["Session Date", "symbol", "Deal Number", "Deal Price",
                "volume", "Hour", "Ind Cancel", "Offer Date", "Seq Offer Date",
                "GenerationID", "Deal Condition", "Date Sell Offer", "Sequence Sell Offer",
                "Generation Id Sell", "Sell Condition", "Indicator", "Broker Buy", "Broker Sell"],
                )

    df = df[df.symbol.str.contains(papel, na=False)]
    df['period'] = pd.to_datetime(df['Session Date']) + pd.to_timedelta(df['Hour'])
    print(df['period'])
    df.set_index('period', inplace=True)

    vol = df['volume'].resample('1d').sum()
    symbol = df['symbol'].resample('1d').sum()
    price = df['Deal Price'].resample('1d').ohlc()
    bars = pd.concat([price, vol, symbol], axis=1)

    bars.rename(columns={
                'open'  : 'ohlc_open',
                'close' : 'ohlc_close',
                'high'  : 'ohlc_high',
                'low'   : 'ohlc_low'}, inplace=True)

    engine = create_engine('sqlite:///database.db')
    bars.to_sql(name='symbol', con=engine, index=True, if_exists='append')

Определение моей базы данных:

class Symbol(Base):
    __tablename__ = 'Symbol'
    id = Column(Integer, primary_key=True)
    symbol = Column(String(250), nullable=False)
    volume = Column(Integer, nullable=False)
    ohlc_open = Column(Float(10), nullable=False)
    ohlc_high = Column(Float(10), nullable=False)
    ohlc_low  = Column(Float(10), nullable=False)
    ohlc_close = Column(Float(10), nullable=False)
    period = Column(DateTime)

Исключение:

 File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/core/generic.py", line 2130, in to_sql
    dtype=dtype)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/sql.py", line 450, in to_sql
    chunksize=chunksize, dtype=dtype)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/sql.py", line 1127, in to_sql
    table.insert(chunksize)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/sql.py", line 619, in insert
    keys, data_list = self.insert_data()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/sql.py", line 600, in insert_data
    d = b.values.astype('M8[us]').astype(object)
ValueError: hour must be in 0..23
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...