我有两个数据帧。第一个(file_1),包含ID列和深度
的深度 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
第二个数据框(file_2),包含一个ID列,深度和深度以及一些参数(填充,粗糙度,厚度)
ID Depth_From Depth_To Infill Roughness Thickness
0 HLD032 681.30 681.301 Qtz R 0.5
1 HLD032 681.37 681.371 Qtz R 0.5
2 HLD032 681.50 681.501 Qtz R 0.5
3 HLD032 682.15 682.151 Qtz R 0.5
4 HLD032 682.71 682.711 Qtz R 0.5
... ... ... ... ... ... ...
125219 HLD650 569.95 569.970 Qtz R 24.0
125220 HLD650 573.08 573.090 Qtz R 5.0
125221 HLD650 588.97 588.980 Qtz R 10.0
我需要的是为每个ID和file_1的每个间隔(深度,深度)创建匹配第二个数据帧(file_2)中的对应参数(填充,粗糙度,厚度)。
由于每个参数的多个值对应于每个间隔,我想要一个像
这样的列 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
任何人都可以帮助我吗?
答案 0 :(得分:0)
希望您能够利用我创建的数据利用此解决方案:
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