我有两个数据框-一个是主数据框(main_df),另一个是查找数据框(lookup_df)。我需要在主数据框中使用两个条件来在查找数据框中查找值。我的数据如下:
main_df
Bore Temperature
4 200
0.75 500
6 200
2 400
3 200
0.75 300
lookup_df
Bore 200 300 400 500
0.5 0.5 0.5 0.5 0.5
0.75 0.5 0.5 0.5 0.5
1 0.5 0.5 0.5 0.5
2 0.5 0.5 0.5 1.0
3 0.5 0.5 1.0 1.0
4 0.5 1.0 1.0 1.0
6 1.0 1.0 1.0 1.0
我的目标是在main_df中有一个新列,其值已被查找。
最终main_df
Bore Temperature Value
4 200 0.5
0.75 500 0.5
6 200 1.0
2 400 0.5
3 200 0.5
0.75 300 0.5
我已经尝试通过各种迭代使用pd.merge,但似乎无法使其正常工作。除了pd.merge之外,还有其他更好的方法吗?
将DataFrame.lookup
与DataFrame.lookup
列一起用于创建索引,并在必要时将列转换为整数:
Bore
[如果可能缺少某些值,那么第一个解决方案可能失败,可以将df['Value'] = (lookup_df.set_index('Bore').rename(columns=int)
.lookup(df['Bore'], df['Temperature']))
print (df)
Bore Temperature Value
0 4.00 200 0.5
1 0.75 500 0.5
2 6.00 200 1.0
3 2.00 400 0.5
4 3.00 200 0.5
5 0.75 300 0.5
与DataFrame.melt
结合使用,如果DataFrame.melt
之后的DataFrame.merge
列中的值为整数,则可以随意删除DataFrame.merge
:
assign
这里是使用列表理解的另一种方法:
Temperature
您可以按钻孔和温度堆叠和合并:
melt