Ваш столбец file_name
удаляется, поскольку в нем нет числового значения dtype
. Не говоря уже о том, что, поскольку вы эффективно агрегируете фрейм данных с помощью mean()
, вас не должно интересовать сохранение file_name исходного источника данных. После переноса среднего значения в ваших объединенных фреймах данных эта информация будет бессмысленной.
Я бы рекомендовал использовать pd.concat()
вместо df.append()
. Даны два образца CSV-файлов:
sample1.csv
capture_datetime_utc,fertilizer_level,light,soil_moisture_present,air_temperature_celsius
2018-07-30 17:34:33,-1.0,1.28,12.13,26.42
2018-07-30 17:49:33,-1.0,1.26,11.87,26.51
2018-07-30 18:04:33,-1.0,1.26,11.47,26.37
2018-07-30 18:19:33,-1.0,1.17,12.00,26.28
2018-07-30 18:34:33,-1.0,0.94,11.47,25.34
sample2.csv
capture_datetime_utc,fertilizer_level,light,soil_moisture_present,air_temperature_celsius
2018-08-28 07:50:23,-1.0,40.73,6.53,31.82
2018-08-28 08:05:23,-1.0,47.13,6.65,33.65
2018-08-28 08:20:23,-1.0,51.94,6.65,35.00
2018-08-28 08:35:23,-1.0,57.46,6.65,36.55
2018-08-28 08:50:23,-1.0,14.17,6.77,32.98
Вы можете сделать следующее:
all_files = ['sample1.csv','sample2.csv']
df = pd.concat([pd.read_csv(file_, sep=',', parse_dates=["capture_datetime_utc"], index_col="capture_datetime_utc") for file_ in all_files], keys=all_files)
df = df.reset_index().set_index('capture_datetime_utc').groupby('level_0').resample('H').mean().dropna()
Что дает:
fertilizer_level light \
level_0 capture_datetime_utc
sample1.csv 2018-07-30 17:00:00 -1.0 1.270000
2018-07-30 18:00:00 -1.0 1.123333
sample2.csv 2018-08-28 07:00:00 -1.0 40.730000
2018-08-28 08:00:00 -1.0 42.675000
soil_moisture_present \
level_0 capture_datetime_utc
sample1.csv 2018-07-30 17:00:00 12.000000
2018-07-30 18:00:00 11.646667
sample2.csv 2018-08-28 07:00:00 6.530000
2018-08-28 08:00:00 6.680000
air_temperature_celsius
level_0 capture_datetime_utc
sample1.csv 2018-07-30 17:00:00 26.465000
2018-07-30 18:00:00 25.996667
sample2.csv 2018-08-28 07:00:00 31.820000
2018-08-28 08:00:00 34.545000