gpt4 book ai didi

python - 根据条件在数据框中查找值

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:45 24 4
gpt4 key购买 nike

我有两个数据帧 - 一个是主数据帧 (main_df),另一个是查找数据帧 (lookup_df)。我在主数据框中有两个条件,我需要使用它们来查找查找数据框中的值。我的数据如下:

主要内容

Bore      Temperature
4 200
0.75 500
6 200
2 400
3 200
0.75 300

查找_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通过 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.meltDataFrame.merge , 如果 melt 之后 Temperature 列中的值为整数,则可以自由删除 assign:

df1 = (lookup_df.melt('Bore', var_name='Temperature', value_name='Value')
.assign(Temperature = lambda x: x['Temperature'].astype(int)))
df = df.merge(df1, how='left')
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

关于python - 根据条件在数据框中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com