Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
Python 使用dataframe通过查找字典并基于键进行比较来筛选行_Python_Pandas - Fatal编程技术网

Python 使用dataframe通过查找字典并基于键进行比较来筛选行

Python 使用dataframe通过查找字典并基于键进行比较来筛选行,python,pandas,Python,Pandas,我的交易记录数据集包含类型,货币1,货币2,以及天数列。我想根据以下标准筛选应排除的记录: 如果类型等于'FO',则应应用以下逻辑: 如果货币1等于“欧元”、“美元”、“日元”、“澳元”或“MXN”,则货币2等于“欧元”、“美元”、“日元”、“澳元”或“MXN”,且天数小于或等于2,则应排除交易 如果货币1或货币2不等于“欧元”、“美元”、“日元”、“澳元”或“MXN”,并且天小于或等于货币对的结算期或七个营业日(以较早者为准),则应排除交易 我还有一本字典,里面有每种货币的[结算]值。获取

我的交易记录数据集包含
类型
货币1
货币2
,以及
天数
列。我想根据以下标准筛选应排除的记录:

如果
类型
等于'FO',则应应用以下逻辑:

  • 如果
    货币1
    等于“欧元”、“美元”、“日元”、“澳元”或“MXN”,则
    货币2
    等于“欧元”、“美元”、“日元”、“澳元”或“MXN”,且
    天数小于或等于2,则应排除交易
  • 如果
    货币1
    货币2
    不等于“欧元”、“美元”、“日元”、“澳元”或“MXN”,并且
    小于或等于货币对的
    结算期或七个营业日(以较早者为准),则应排除交易
我还有一本字典,里面有每种货币的
[结算]
值。获取结算期的方法如下所示:

  • 如果
    货币1
    货币2
    等于“美元”,则结算期应等于
    [结算]
    最小值
  • 如果
    货币1
    货币2
    均不等于“美元”,则结算期应等于
    [结算]
    最大值
这本字典看起来是这样的:
consolution_dict={'AED':2,'PHP'=1,'AUD'=2,…}


这些逻辑相互嵌入,我不知道如何使用pandas应用逻辑过滤排除的交易。我非常感谢你在这方面的帮助。谢谢。

您可以使用numpy.where()在数据帧中创建条件列。这里有一个例子:@DSteman非常感谢您提供的方向和条件列。一个简单的问题:在编写条件列的条件时,我们如何能够查找字典并比较查找结果?您可以添加一个额外的列,在其中根据该字典将货币转换为数字。然后在您的条件中也使用该列。