【发布时间】:2020-07-30 11:01:10
【问题描述】:
我过去问过一个类似的问题,但是,它的过滤条件不同。因此,我发布了这个:
我有两个日期帧(df1 和 df2),我正在尝试弄清楚如何使用 df2 中的条件从 df1 中提取值并在 df2 中使用提取的值。
df1 = 精确值
df2 = 使用提取值的精确条件和 df
条件:df2.ans = df2HJ & df2.P1 = df1 P2 colum
示例if df2(df2.HJ = 99 & df2.P1 = 0); Ans = 76 (from df1)
df1
╔════╦════╦══════╦ ║ HJ ║ P1 ║ P2 ║ ╠════╬════╬══════╬ ║ 5 ║ 51 ║ 33 ║ ║ 11 ║ 66 ║ 45 ║ ║ 21 ║ 7 ║ 55 ║ ║ 99 ║ 0 ║ 76 ║ ║ 15 ║ 11 ║ 42 ║ ╚════╩════╩══════╩df2
╔════╦════╗ ║ HJ ║ P1 ║ ╠════╬════╣ ║ 99 ║ 0 ║ ║ 11 ║ 66 ║ ║ 5 ║ 51 ║ ║ 21 ║ 7 ║ ║ 11 ║ 66 ║ ╚════╩════╝从 df1 提取后 df2 的预期结果
╔════╦════╦═══════╗ ║ HJ ║ P1 ║ Ans ║ ╠════╬════╬═══════╣ ║ 99 ║ 0 ║ 76 ║ ║ 11 ║ 66 ║ 45 ║ ║ 5 ║ 51 ║ 33 ║ ║ 21 ║ 7 ║ 55 ║ ║ 11 ║ 66 ║ 45 ║ ╚════╩════╩═══════╝df1 的代码
import pandas as pd
import numpy as np
data = {'HJ':[5,11,21,99,15],
'P1':[51,66,7,0,11]
,'P2':[ 33,45,55 ,76 ,42]}
df1 = pd.DataFrame(data)
df2 的代码
data = {'HJ':[99,11,5,21,11],
'P1':['0','66','51','7','66']}
df2 = pd.DataFrame(data)
问候 谢谢
【问题讨论】:
-
只需使用
df2.astype({'P1': 'int'}).merge(df1, on=['HJ', 'P1']) -
这能回答你的问题吗? Pandas Merging 101