У меня есть кадр данных в pandas, который выглядит ниже. Индекс представляет собой объект даты и времени, упорядоченный по дням и разделенный на 5-минутные интервалы. У меня есть столбец с именем «col1». Так что если я сделаю
df['col1']
Я получил:
DateTime
2008-04-28 09:40:00 300.0
2008-04-28 09:45:00 -800.0
2008-04-28 09:50:00 0.0
2008-04-28 09:55:00 -100.0
2008-04-28 10:00:00 0.0
2008-04-29 09:40:00 500.0
2008-04-29 09:45:00 800.0
2008-04-29 09:50:00 100.0
2008-04-29 09:55:00 -100.0
2008-04-29 10:00:00 0.0
У меня есть еще один кадр данных в pandas, полученный с использованием groupby в исходном кадре данных с использованием
df2 = df([df.index.time])[['col2']].mean()
который выводит:
col2
09:40:00 4603.585657
09:45:00 5547.011952
09:50:00 8532.007952
09:55:00 6175.298805
10:00:00 4236.055777
Что я хотел бы сделать, так это разделить col1 на col2 для каждого из 5-минутных интервалов без использования цикла for. Чтобы лучше объяснить, для всех дней для каждого бина разделите col1 на col2. Например, разделите все значения 9:40:00 в col1 на значение 9:40:00 в col2.
Я понятия не имею, как начать делать это без цикла for, но у меня сложилось впечатление, что это должно быть выполнимо с пандами.
Ожидаемый результат:
DateTime
2008-04-28 09:40:00 300.0/4603.585657
2008-04-28 09:45:00 -800.0/5547.011952
2008-04-28 09:50:00 0.0/8532.007952
2008-04-28 09:55:00 -100.0/6175.298805
2008-04-28 10:00:00 0.0/4236.055777
2008-04-29 09:40:00 500.0/4603.585657
2008-04-29 09:45:00 800.0/5547.011952
2008-04-29 09:50:00 100.0/8532.007952
2008-04-29 09:55:00 -100.0/6175.298805
2008-04-29 10:00:00 0.0/4236.055777
print (df2.index[:10])
? 19.03.2019print (type(df2.index[0]))
? 19.03.2019col2
используетсяdf.groupby(df.index.time)['col1'].transform('mean')
19.03.2019