2015-07-16 3 views
2

В настоящее время я пытаюсь добавить столбец в файл HDF5, который уже существует. В принципе у меня есть столбец с датами «% Y-% m-% d% hh:% mm:% ss», и я хотел бы добавить новый столбец с датами в формат «% Y-% m-% д». Моя проблема в том, что я понятия не имею, как это сделать, я пытался с .append, но безуспешно. Я хочу позже сравнить эти даты с другими, чтобы сохранить только те, которые я хочу. Если кто-то может мне помочь, это будет потрясающе (я кодирую на Python) !.Добавить столбец в файл HDF5

Благодаря

Pierre

+0

Вы действительно хотите добавить колонку? Он избыточен и будет иметь меньше информации, чем исходный столбец. Что касается того, как добавить столбец в набор данных hdf5, как я понимаю, это не тривиальная операция, поэтому я спрашиваю, действительно ли вы хотите добавить столбец. Если вы действительно хотите добавить столбец в существующий набор данных, тогда было бы намного легче ответить на ваш вопрос, если бы вы предоставили образцы данных и пример кода. – Phil

+0

Спасибо за ваш ответ Фил! Я думал, что это было проще и простой операции, но, видимо, нет. На самом деле у меня есть два файла. Сначала у меня есть «контейнер», он содержит этот набор данных HDF5 с 7 столбцами, в том числе с датами. Мой другой файл - это. CSV-файл со списком дат, которые мне нужны. Мне нужно создать новый набор данных HDF5, содержащий только данные о датах, приведенных в файле csv. (это в основном фильтр) Я спокойно в этом поле, и поэтому я немного потерян. Если у вас есть идея или ссылка, чтобы помочь мне, было бы здорово. Спасибо –

ответ

0

Я на самом деле решить эту проблему путем копирования ма dataframe на новую строку файла построчно и используя в то же время мой фильтр. Кажется, нужно работать, даже если требуется некоторое время. Thanks

Еще раз спасибо Фил, вот код, который я использую для написания файла H5. На самом деле для фильтрации и записи нового файла требуется около 2 минут. Файл .CSV - это список дат, которые я хочу сохранить (и, следовательно, удалять строки, относящиеся к другим датам).

_hdf_store_path = config.get_hdf_store_path() 
store = pd.HDFStore(os.path.join(_hdf_store_path, "household_{}_good.h5".format(household_id)), mode='w') 
data_file = os.path.join(_hdf_store_path, "household_{}.h5".format(household_id)) 
data_store = pd.HDFStore(data_file) 
df_1 = pd.concat([data_store[key] for key in data_store.keys()]) 
df_1_bis = df_1[df_1.date >= "2012-09-01"].sort("date") 

dates = [] 
with open('Good_dates_{}_80pc.csv'.format(household_id), 'rb') as fp: 
    for line in fp: 
     str_line = line.decode("utf-8") 
     dates.append(datetime.datetime.strptime(str_line.split()[0], "%Y-%m-%d")) 

for day in dates: 
    print("day =", day) 
    day_after = day + datetime.timedelta(1) 
    df_bis = df_1_bis[df_1_bis.date >= day] 
    df = df_bis[df_bis.date <= day_after] 
    store.append("day", df, min_itemsize={'ID': 15, 'sensor_id': 15, 'type': 15, 'date': 15, 'room': 15, 
              'place': 15, 'value': 15}) 
store.close() 
+0

Я уверен, что есть более чистый и быстрый способ использования h5py и панд. Если вы предоставите образец кода и файл данных, я посмотрю на него. – Phil

Смежные вопросы