Возьмем случай с двумя таблицами, Books
и Orders
. В случае увеличения количества книг в определенном порядке с Order.ID = 1002
в таблице Orders
, нам также необходимо уменьшить, что общее количество книг, доступных в нашем запасе, одинаковым числом в таблице Books
.
UPDATE Books, Orders
SET Orders.Quantity=Orders.Quantity+2,
Books.InStock=Books.InStock-2
WHERE Books.BookID=Orders.BookID
AND Orders.OrderID = 1002;
pandas.HDFStore.put () имеет параметр append
(по умолчанию - False
) - это указывает, что Pandas будет перезаписываться вместо добавления.
Так что попробуйте это :
store = pd.HDFStore('test.h5')
store.append('name_of_frame', ohlcv_candle, format='t', data_columns=True)
мы также можем использовать store.put(..., append=True)
, но этот файл также должен быть создан в формате таблицы:
store.put('name_of_frame', ohlcv_candle, format='t', append=True, data_columns=True)
tohlcv_candle.to_hdf('test.h5',key='this_is_a_key', append=True, mode='r+', format='t')
Вам нужно передать другой аргумент append=True
, чтобы указать, что данные должны быть добавлены к существующим данным, если они найдены под этим ключом, вместо того, чтобы переписывать его.
Без этого по умолчанию используется False
, и если он встречает существующую таблицу под 'this_is_a_key'
, она перезаписывается.
Аргумент mode=
находится только на уровне файла, указывая, должен ли файл в целом быть перезаписан или добавлен.
В одном файле может быть любое количество клавиш, поэтому установка mode='a', append=False
будет означать, что только одна клавиша будет перезаписана, пока остальные ключи остаются.
У меня был такой же опыт, как у вас, и был найден дополнительный аргумент append в справочном документе. После настройки, теперь это добавление должным образом для меня.
Ссылка: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_hdf.html
Примечание: hdf5 не будет ничего делать с индексами dataframe. Нам нужно их убрать, прежде чем вставлять данные или когда мы их вынимаем.
append
работает, аput
- нет? – Mayou36 20 October 2017 в 11:12