Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dataframe2(pandas,python)中设置的条件从dataframe1提取值_Python_Pandas_Dataframe - Fatal编程技术网

使用dataframe2(pandas,python)中设置的条件从dataframe1提取值

使用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','

我在过去问过一个类似的问题,但是,它的过滤条件不同。因此,我发布以下内容:

我有两个日期框(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','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)