Я читаю много CSV-файлов. Каждый из них содержит данные временного ряда. Например:
import pandas as pd
csv_a = [['2019-05-25 10:00', 25, 60],
['2019-05-25 10:05', 26, 25],
['2019-05-25 10:10', 27, 63],
['2019-05-25 10:20', 28, 62]]
df_a = pd.DataFrame(csv_a, columns=["Timestamp", "Temperature", "Humidity"])
df_a["Timestamp"] = (pd.to_datetime(df_a["Timestamp"]))
csv_b = [['2019-05-25 10:05', 1020],
['2019-05-25 10:10', 1021],
['2019-05-25 10:15', 1019],
['2019-05-25 10:45', 1035]]
df_b = pd.DataFrame(csv_b, columns=["Timestamp", "Pressure"])
df_b["Timestamp"] = (pd.to_datetime(df_b["Timestamp"]))
После создания этих фреймов данных мы можем увидеть:
print(df_a)
Timestamp Temperature Humidity
0 2019-05-25 10:00:00 25 60
1 2019-05-25 10:05:00 26 25
2 2019-05-25 10:10:00 27 63
3 2019-05-25 10:20:00 28 62
print(df_b)
Timestamp Pressure
0 2019-05-25 10:05:00 1020
1 2019-05-25 10:10:00 1021
2 2019-05-25 10:15:00 1019
3 2019-05-25 10:45:00 1035
Я хочу создать новый фрейм данных с регулярным индексом, например:
import datetime as dt
start = dt.datetime(2019,5,25,10,0,0)
end = dt.datetime(2019,5,25,10,20,0)
index = pd.date_range(start, end, freq='5min')
А затем начните добавлять каждый временной ряд в разные столбцы, заполняя пропущенные значения NaN и отбрасывая значения из моего индекса.
Желаемый результат:
Temperature Humidity Pressure
Timestamp
2019-05-25 10:00:00 25.0 60.0 NaN
2019-05-25 10:05:00 26.0 25.0 1020.0
2019-05-25 10:10:00 27.0 63.0 1021.0
2019-05-25 10:15:00 NaN NaN 1019.0
2019-05-25 10:20:00 28.0 62.0 NaN
И я Также хочу сделать это максимально эффективно. Допустим, у меня есть сотни CSV и длинные серии.
Я работаю с такими функциями Panda, как concat или append, но не могу получить то, что хочу.