Python 查找df值在其他df的bin范围内的索引

Python 查找df值在其他df的bin范围内的索引,python,pandas,dataframe,Python,Pandas,Dataframe,我试图在一个数据帧中创建一个新的列df2[“v2”],其中填充了来自不同数据帧df1[“v1”]的值 第一个数据帧保存在df1[“T1”]中存储的时间测量值1的值。第二个数据帧现在应该存储测量值1中的值,但具有不同的时间采样。在现实任务中,时间采样不是均匀分布的(也不是单调增加的,至少在默认情况下是如此) 这样做的愚蠢方式可能是: df2["v2"] = pd.Series() for n in range(df1["T1"].size-1): t1

我试图在一个数据帧中创建一个新的列df2[“v2”],其中填充了来自不同数据帧df1[“v1”]的值

第一个数据帧保存在df1[“T1”]中存储的时间测量值1的值。第二个数据帧现在应该存储测量值1中的值,但具有不同的时间采样。在现实任务中,时间采样不是均匀分布的(也不是单调增加的,至少在默认情况下是如此)

这样做的愚蠢方式可能是:

df2["v2"] = pd.Series()
for n in range(df1["T1"].size-1):
   t1 = df1["T1"].iloc[n]
   t2 = df1["T1"].iloc[n+1]
   mask =  (t1 <= df2["T2"]) & (df2["T2"] < t2)
   df2["v2"].loc[mask]= df1["v1"].iloc[n]

达到同样效果的最快/最优雅的方法是什么?

以下是解决问题的一种方法:

bins = pd.cut(df1['T1'], df1['T1'], right=False)
mapping = df1[:-1].set_index(bins[:-1])['v1']

df2['v2'] = df2['T2'].map(mapping)
详细信息:

T1
列中的值分类为离散区间,以
T1
列本身为特征:

>>> bins

0      [0.0, 5.0)
1     [5.0, 10.0)
2    [10.0, 15.0)
3             NaN
Name: T1, dtype: category
Categories (3, interval[int64]): [[0, 5) < [5, 10) < [10, 15)]
map
在上述
map
系列的帮助下,
T2
列中的值:

>>> mapping

T1
[0, 5)      0
[5, 10)     1
[10, 15)    2
Name: v1, dtype: int64
>>> df2

    T2  v2
0    0   0
1    1   0
2    2   0
3    3   0
4    4   0
5    5   1
6    6   1
7    7   1
8    8   1
9    9   1
10  10   2
11  11   2
12  12   2
13  13   2
14  14   2

请同时发布预期输出。此外,在您发布的代码中,您参考了
df
,而您创建的两个数据帧分别称为
df1
df2
。谢谢,更正了输入错误并添加了输出。
>>> mapping

T1
[0, 5)      0
[5, 10)     1
[10, 15)    2
Name: v1, dtype: int64
>>> df2

    T2  v2
0    0   0
1    1   0
2    2   0
3    3   0
4    4   0
5    5   1
6    6   1
7    7   1
8    8   1
9    9   1
10  10   2
11  11   2
12  12   2
13  13   2
14  14   2