我有两个数据帧。第一个(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
我需要的是为第二个数据帧(file_2)中的每个ID和每个间隔(depth from,depth to)为file_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
有人能帮我吗?
发布于 2018-03-29 09:22:41
希望您能够通过我创建的数据利用此解决方案:
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
https://stackoverflow.com/questions/49419099
复制