根据数据帧之间的匹配小时/分钟填写时间序列



我正试图基于一天的数据创建一个数据帧,其中包含一年的数据。我所有的数据都是分钟级别的频率。为此,我使用pandas date_range函数创建了一个新的数据帧来创建索引:

df_fullyear = pd.DataFrame(index=pd.date_range(start='2029-01-01', end='2030-01-01', freq='T', closed='left'))

从那里,我想根据匹配的小时/分钟从我的单日数据帧中复制值——例如,无论何时是我全年数据帧中的4:00,我都希望从我的当日数据帧中获得4:00的值。下面是我尝试匹配这两个数据帧的方法——它肯定不起作用,但如果不循环每小时每分钟,并一点一点地分配全年df,我想不出更优雅的方法了。

(df_fullyear.index.hour == dfs[2029].index.hour) & (df_fullyear.index.minute == dfs[2029].index.minute)

在数据帧之间按小时/分钟进行匹配的最Python的方法是什么?

您可以重复每日数据中的值,如下所示:

import numpy as np
import pandas as pd
df_fullyear = pd.DataFrame(
index=pd.date_range(
start='2029-01-01',
end='2030-01-01',
freq='T',
closed='left'))
day_data = pd.Series(
index=pd.date_range("2000-01-01", "2000-01-02", freq="T", closed="left"),
data=np.random.randn(24 * 60))
num_days, rem = divmod(len(df_fullyear), len(day_data))
assert rem == 0
values = np.tile(day_data.values, num_days)
df_fullyear['mycol'] = values
print(df_fullyear[
(df_fullyear.index.minute==0) & (df_fullyear.index.hour==4)])

输出:

mycol
2029-01-01 04:00:00 -0.646003
2029-01-02 04:00:00 -0.646003
...

相关内容

最新更新