[英]Function to filter dataframe with multiple if / and conditions
构建一个 function,查看 dataframe 和变量“ infolist ”并返回一组客户端,这些客户端同时在 infolist 和 dataframe 中,并且至少满足一个语句:
信息列表中会员费大于/等于当前“报价”的任何客户
信息列表中“反馈”为 0.2(或更高)的任何客户
示例 dataframe:
df = pd.DataFrame({'Client': ['A','B','C'], 'Offer-Price':[90,6591,8000], 'Feedback': [0.1, 0.2,0.1]})
Client Offer-Price Feedback
0 A 90 0.1
1 B 6591 0.2
2 C 8000 0.1
'infolist'/元组输入:
infolist = [('A', 100.0), ('C', 3900.0)]
预期结果:
Client C
到目前为止尝试的代码:不确定为什么经过大量研究后这不起作用。
def testfunction(df, infolist):
df = np.where((df['Client']== infolist[x[0]]) & (df['Feedback']>= 0.2) | (infolist[x[1]] >= df['Offer-Price']))
return df
从infolist
创建一个 dataframe 然后将其合并到df
并过滤掉您的数据:
out = pd.DataFrame(infolist, columns=['Client', 'Offer-Price']).merge(df, on='Client')
mask = (out['Offer-Price_x'] < out['Offer-Price_y']) | (out['Feedback'] >= 0.2)
out = out.loc[mask, 'Client']
print(out)
# Output:
1 C
Name: Client, dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.