基于条件的数据框中的查找值

问题描述 投票:1回答:3

我有两个数据框-一个是主数据框(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之外,还有其他更好的方法吗?

python pandas dataframe
3个回答
3
投票

DataFrame.lookupDataFrame.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

1
投票

这里是使用列表理解的另一种方法:

Temperature

0
投票

您可以按钻孔和温度堆叠和合并:

melt
© www.soinside.com 2019 - 2024. All rights reserved.