Python 如何创建一个列,将列中的所有值分组到列表中,该列表位于表中不同列的值之间

Python 如何创建一个列,将列中的所有值分组到列表中,该列表位于表中不同列的值之间,python,pandas,Python,Pandas,我有两个数据帧,如下所示: unit start stop A 0.0 8.15 B 9.18 11.98 A 13.07 13.80 B 13.82 15.00 A 16.46 17.58 df_2 如果df_2.time介于df_1.start和df_1.stop之间,如何将df_2.other_数据中的所有值追加到列表(或数组)中?例如,第1行的df_2.time介于df_1.start和df_1.stop

我有两个数据帧,如下所示:

unit      start    stop
A      0.0    8.15
B      9.18   11.98
A     13.07   13.80
B     13.82   15.00
A     16.46   17.58
df_2

如果df_2.time介于df_1.start和df_1.stop之间,如何将df_2.other_数据中的所有值追加到列表(或数组)中?例如,第1行的df_2.time介于df_1.start和df_1.stop之间的df_2.other_数据的所有值都将是[5,5,6,10,5,2,15]

所需的df如下所示

unit      start    stop   other_data_list
A      0.0    8.15          [5,5,6,10,5,2,1,5]
B      9.18   11.98         [5,7,5]
A     13.07   13.80         [5] 
B     13.82   15.00         [5,10,5]
A     16.46   17.58         [4,4]
使用以下命令:

df1['other'] = df1.apply(lambda row : df2['other_data'].loc[(df2['time'] > row['start']) & (df2['time'] < row['stop'])].tolist(), axis=1)

对于
df1
的每一行,使用
apply
可以在
df2
中选择所需的值。使用pandas.Series的
tolist()
方法将所选内容转换为
列表
,否则您将得到
值错误:传递的项目数错误

您应该能够连接两个数据帧,然后使用
.groupby()
为什么在13.07和13.80之间得到5?那不是空的吗?还有其他值不在两者之间,而是添加到列表中。
df1['other'] = df1.apply(lambda row : df2['other_data'].loc[(df2['time'] > row['start']) & (df2['time'] < row['stop'])].tolist(), axis=1)
  unit  start   stop                      other
0    A   0.00   8.15  [5, 5, 6, 10, 5, 2, 1, 5]
1    B   9.18  11.98                     [7, 5]
2    A  13.07  13.80                         []
3    B  13.82  15.00                       [10]
4    A  16.46  17.58                        [4]