过滤具有不同掩码的数据帧

时间:2018-01-18 04:23:59

标签: python pandas dataframe filter

我有2个已过滤的数据框

df_pass = total_avg[total_avg>3] produces the following dataframe
    AAPL        GOOGL  GOOG     MSFT 
1   3.401017    NaN     NaN     3.255119
2   NaN         NaN     NaN      NaN
3   4.16666     NaN     NaN     3.264101
4   3.049794    4.331   NaN     NaN

我在另一个DF上有另一个过滤器,但DF的布局与第一个相同。因此,此代码生成以下DF结果

df_min_pass = total_min[total_min>-10]  
    AAPL    GOOGL   GOOG    MSFT
1   NaN      NaN   -2.099   NaN
2   NaN      NaN   -6.08    NaN
3   NaN    -8.319  -1.86    -7.3
4   NaN    -7.304  -6.92    NaN

请记住,这只是DF的一个示例。他们有更多的专栏。我想得到一个结合了do的结果数据帧。因此,如果它通过了两个条件,它将在另一个DF中显示结果,否则显示NaN,如果它不满足麻烦的条件。我尝试了许多组合,例如

df_combo_all = (df_pass[df_pass >3]) & (df_min_pass[df_min_pass >-10])
df_combo_all = df_combo_all[(df_pass[df_pass >3]) & (df_min_pass[df_min_pass >-10])]

单独使用过滤器但我一直收到此错误

TypeError:ufunc' bitwise_and'输入类型不支持,并且输入无法根据投射规则安全地强制转换为任何支持的类型'安全'。

似乎存在多面具问题以及其他关于按位错误的问题,但我似乎无法找到适合我的问题。任何人都可以请帮助

1 个答案:

答案 0 :(得分:0)

更新:让我们使用mask

df_pass.mask(df_min_pass.isnull())

输出:

   AAPL  GOOGL  GOOG      MSFT
1   NaN    NaN   NaN       NaN
2   NaN    NaN   NaN       NaN
3   NaN    NaN   NaN  3.264101
4   NaN  4.331   NaN       NaN