【发布时间】:2022-01-23 20:20:44
【问题描述】:
问题来了:
我想选择 df1 中每个 index1 的数据框(例如 df3),使其位于 df2 中的 d_reach 和 d_start 之间,
下面是生成样本的代码:
import numpy as np
import pandas as pd
import datetime
from datetime import timedelta
index1 = pd.date_range(datetime.datetime(2021, 1, 1, 1, 1), periods = 1000, freq = "3min")
df1 = pd.DataFrame(np.random.random(1000), index = index1, columns = ['r'])
d_start = pd.date_range(datetime.datetime(2021, 1, 1, 1, 1), periods = 500, freq = "5min")
d_reach = d_start + timedelta(seconds = np.random.randint(low = 4, high = 6))
value = {'id3': np.tile([0,1], 250)}
df2 = pd.DataFrame(value, index = [d_start,d_reach])
df2.index.names = ['d_start','d_reach']
df2 被多重索引。
df3 的预期输出应该是:
2021-01-01 01:07:00 0.011026
2021-01-01 01:10:00 0.423813
...
这里是index1 in df1 2021-01-01 01:07:00 >= 2021-01-01 01:06:05 这是df2 中的d_reach 之一
和df1 中的下一个index1 2021-01-01 01:10:00 < 2021-01-01 01:11:00 是df2 中的下一个d_start
下面是我试过但失败的代码:
df = pd.DataFrame()
for i in df1.index:
df = df.append(df1.loc[i])
for idx1, idx2 in zip(df2.index.get_level_values(0).tolist(),
df2.index.get_level_values(1).tolist())
if i >= idx1 and i <= idx2
非常感谢任何关于在 Python 中查找 df3 的建议。谢谢!
【问题讨论】: