Pandas 数据帧之间的匹配间隔

Pandas 数据帧之间的匹配间隔,pandas,dataframe,intervals,matching,Pandas,Dataframe,Intervals,Matching,我有两个数据帧。第一个(文件_1),包含一个ID列和深度from和depth to ID Depth_From Depth_To 0 HLD032 611.10 612.00 1 HLD032 612.00 612.20 2 HLD032 612.20 614.80 3 HLD032 614.80 616.20 4 HLD032

我有两个数据帧。第一个(文件_1),包含一个ID列和深度from和depth to

           ID  Depth_From  Depth_To 
0      HLD032      611.10    612.00  
1      HLD032      612.00    612.20   
2      HLD032      612.20    614.80  
3      HLD032      614.80    616.20 
4      HLD032      616.20    617.80
...        ...         ...       ...  
10082  HLD650      594.80    596.50      
10083  HLD650      596.50    597.40        
10084  HLD650      597.40    598.10   
第二个数据帧(文件_2),包含一个ID列、从和到的深度以及一些参数(填充、粗糙度、厚度)

我需要的是为第二个数据帧(文件2)中的每个ID和文件1的每个间隔(深度从,深度到)创建对应参数(填充,粗糙度,厚度)的匹配

由于每个参数的多个值将对应于每个间隔,因此我需要一个类似

            ID  Depth_From  Depth_To Infill             Roughness  Thickness
0       HLD032      611.10    612.00     Qtz, Qtz, Qtz    R,R,R,K   0.3,0.10.5
1       HLD032      681.37   681.371    Qtz, Chl,Chl      S,R,R   0.1.0.2,0.5
2       HLD032      681.50   681.501    Qtz,Btz,Lm       R,Y,Y        0.5,3,1

有人能帮助我吗?

希望您能利用我创建的数据利用此解决方案:

import pandas as pd

df1 = pd.DataFrame({'ID': [1, 1, 1, 1, 2, 2, 2, 2],
                    'From': [1, 3, 5, 7, 1, 2, 3, 4],
                    'To': [4, 6, 6, 9, 3, 4, 7, 6]})

df2 = pd.DataFrame({'ID': [1, 1, 2],
                    'From': [3, 5, 5],
                    'To': [4, 6, 6],
                    'Value': [5,10,15]})

df1['Value'] = df1.apply(lambda x: ', '.join(df2.loc[(df2['ID']==x['ID'])& \
                                                    (df2['From']>=x['From'])& \
                                                    (df2['To']<=x['To']), 'Value'].astype(str).tolist()), axis=1)
df1
#   From  ID  To  Value
#0     1   1   4      5
#1     3   1   6  5, 10
#2     5   1   6     10
#3     7   1   9       
#4     1   2   3       
#5     2   2   4       
#6     3   2   7     15
#7     4   2   6     15
将熊猫作为pd导入
df1=pd.DataFrame({'ID':[1,1,1,2,2,2],
'From':[1,3,5,7,1,2,3,4],
‘To’:[4,6,6,9,3,4,7,6]})
df2=pd.DataFrame({'ID':[1,1,2],
'From':[3,5,5],
“To”:[4,6,6],
“值”:[5,10,15]})
df1['Value']=df1.apply(lambda x:','.join(df2.loc[(df2['ID']==x['ID'])和\
(df2['From']>=x['From'])和\

(df2['To']你好?有人有兴趣帮我吗?谢谢:)谢谢zipa。当我在let you know@Tani84回家时,我会试一试。不客气,这个原则应该适合你,尽管必须有一个更好的解决方案speed-wisePerfect。它很有效。只是另一个调整。如果我想在列表中选择一个特定的值。在你的例子中,在5到10之间,我希望该值为10
import pandas as pd

df1 = pd.DataFrame({'ID': [1, 1, 1, 1, 2, 2, 2, 2],
                    'From': [1, 3, 5, 7, 1, 2, 3, 4],
                    'To': [4, 6, 6, 9, 3, 4, 7, 6]})

df2 = pd.DataFrame({'ID': [1, 1, 2],
                    'From': [3, 5, 5],
                    'To': [4, 6, 6],
                    'Value': [5,10,15]})

df1['Value'] = df1.apply(lambda x: ', '.join(df2.loc[(df2['ID']==x['ID'])& \
                                                    (df2['From']>=x['From'])& \
                                                    (df2['To']<=x['To']), 'Value'].astype(str).tolist()), axis=1)
df1
#   From  ID  To  Value
#0     1   1   4      5
#1     3   1   6  5, 10
#2     5   1   6     10
#3     7   1   9       
#4     1   2   3       
#5     2   2   4       
#6     3   2   7     15
#7     4   2   6     15