使用dataframe2(pandas,python)中设置的条件从dataframe1提取值
我在过去问过一个类似的问题,但是,它的过滤条件不同。因此,我发布以下内容: 我有两个日期框(df1和df2),我试图找出如何使用df2中的条件从df1中提取值,并在df2中使用提取的值 df1=从中精确计算的值 df2=使用提取值的提取条件和df 条件:使用dataframe2(pandas,python)中设置的条件从dataframe1提取值,python,pandas,dataframe,Python,Pandas,Dataframe,我在过去问过一个类似的问题,但是,它的过滤条件不同。因此,我发布以下内容: 我有两个日期框(df1和df2),我试图找出如何使用df2中的条件从df1中提取值,并在df2中使用提取的值 df1=从中精确计算的值 df2=使用提取值的提取条件和df 条件:df2.ans=df2HJ&df2.P1=df1 P2列 示例如果df2(df2.HJ=99&df2.P1=0);Ans=76(来自df1) df1 df2的代码 data = {'HJ':[99,11,5,21,11], 'P1':['0','
df2.ans=df2HJ&df2.P1=df1 P2列
示例如果df2(df2.HJ=99&df2.P1=0);Ans=76(来自df1)
df1
df2的代码
data = {'HJ':[99,11,5,21,11],
'P1':['0','66','51','7','66']}
df2 = pd.DataFrame(data)
问候
谢谢你我不知道你为什么想要这个例子,因为你的预期结果是df1和其他订单
但是如果你想连接不同的数据帧,它会很有用。连接函数:多亏了@Pol Renau Larrodépointers,我才能够解决这个问题
res=df2.merge(df1,how='internal',left_on=['HJ',P1'],right_on=['HJ',P1'])原始df要大得多,并且都包含不同数量的行和列。为便于理解参考资料,示例缩短并简化了视觉。干杯该链接非常有用,有助于解决问题。感谢您简单地使用
df2.astype({'P1':'int'}).merge(df1,on=['HJ','P1'])
这能回答您的问题吗?
╔════╦════╗
║ HJ ║ P1 ║
╠════╬════╣
║ 99 ║ 0 ║
║ 11 ║ 66 ║
║ 5 ║ 51 ║
║ 21 ║ 7 ║
║ 11 ║ 66 ║
╚════╩════╝
╔════╦════╦═══════╗
║ HJ ║ P1 ║ Ans ║
╠════╬════╬═══════╣
║ 99 ║ 0 ║ 76 ║
║ 11 ║ 66 ║ 45 ║
║ 5 ║ 51 ║ 33 ║
║ 21 ║ 7 ║ 55 ║
║ 11 ║ 66 ║ 45 ║
╚════╩════╩═══════╝
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)
data = {'HJ':[99,11,5,21,11],
'P1':['0','66','51','7','66']}
df2 = pd.DataFrame(data)