数据帧中的Python求和检查

数据帧中的Python求和检查,python,pandas,dataframe,Python,Pandas,Dataframe,df1: df1=pd.DataFrame({'id':['val1','val2','val3','val4','val5','val6'], 'min':['10','10','75','42','20','50'], 'max':['93','43','122','80','30','105']}) df2=pd.DataFrame({'id':['val1','val2','val5','val1','val5','val2'],

df1:

df1=pd.DataFrame({'id':['val1','val2','val3','val4','val5','val6'],
         'min':['10','10','75','42','20','50'],
         'max':['93','43','122','80','30','105']})
df2=pd.DataFrame({'id':['val1','val2','val5','val1','val5','val2'],
           'check':['55.4','35.8','93','11.5','23.8','3.22']})
df2:

df1=pd.DataFrame({'id':['val1','val2','val3','val4','val5','val6'],
         'min':['10','10','75','42','20','50'],
         'max':['93','43','122','80','30','105']})
df2=pd.DataFrame({'id':['val1','val2','val5','val1','val5','val2'],
           'check':['55.4','35.8','93','11.5','23.8','3.22']})
目标是当id与df1匹配时,对df2中相应的检查列值求和,检查结果和是否在df1中的min-max范围内,并更新df2的结果列中的值

输出df:

id            check        result
val1          55.4         positive
val2          35.8         positive
val5          93           positive
val3          10.1         negative
val1          11.5         positive
val5          23.8         positive
val2          3.22         positive

非常感谢

让我们做
合并
评估

df=df2.merge(df1,how='left').eval('result=check>min and check < max')
Out[621]: 
     id check min max  result
0  val1  55.4  10  93    True
1  val2  35.8  10  43    True
2  val5    93  20  30   False
3  val1  11.5  10  93    True
4  val5  23.8  20  30    True
5  val2  3.22  10  43    True
df=df2.merge(df1,how='left').eval('result=check>min,check
让我们做
合并
评估

df=df2.merge(df1,how='left').eval('result=check>min and check < max')
Out[621]: 
     id check min max  result
0  val1  55.4  10  93    True
1  val2  35.8  10  43    True
2  val5    93  20  30   False
3  val1  11.5  10  93    True
4  val5  23.8  20  30    True
5  val2  3.22  10  43    True
df=df2.merge(df1,how='left').eval('result=check>min,check
我们可以在
之间合并并使用

(df2.merge(df1, on='id', how='left')
   .assign(result=lambda x: np.where(x.check.between(x['min'],x['max']), 
                                     'positive', 'negative')
          )
   .drop(['min','max'], axis=1)
)
输出:

     id check    result
0  val1  55.4  positive
1  val2  35.8  positive
2  val5    93  negative
3  val1  11.5  positive
4  val5  23.8  positive
5  val2  3.22  positive

我们可以在
之间合并并使用

(df2.merge(df1, on='id', how='left')
   .assign(result=lambda x: np.where(x.check.between(x['min'],x['max']), 
                                     'positive', 'negative')
          )
   .drop(['min','max'], axis=1)
)
输出:

     id check    result
0  val1  55.4  positive
1  val2  35.8  positive
2  val5    93  negative
3  val1  11.5  positive
4  val5  23.8  positive
5  val2  3.22  positive
我想你需要我的帮助。然后使用以下内容创建一个新列:

输出df2

     id check    result
0  val1  55.4  positive
1  val2  35.8  positive
2  val5    93  negative
3  val1  11.5  positive
4  val5  23.8  negative
5  val2  3.22  positive
我想你需要我的帮助。然后使用以下内容创建一个新列:

输出df2

     id check    result
0  val1  55.4  positive
1  val2  35.8  positive
2  val5    93  negative
3  val1  11.5  positive
4  val5  23.8  negative
5  val2  3.22  positive

val3呢?val3呢?