数据帧中的Python求和检查
df1:数据帧中的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=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呢?