【问题标题】:Nested where statement using pandas?使用 pandas 嵌套 where 语句?
【发布时间】:2021-03-18 09:38:24
【问题描述】:

我正在尝试使用 python 在 PowerBI 中运行一个简单的查询。遗憾的是,PowerBI 不支持大多数 python 库,所以我仅限于 pandas 和 numpy。数据集是一组处于管道中或活动中的项目。我想根据一组或条件将数据集过滤到仅在管道中的行。所以它想看看

dataframe = pd.DataFrame(where project = 'Pipeline'),过滤管道启动的其他条件集)

这在 python 中是否可能,类似于嵌套的 where 语句?

【问题讨论】:

  • Python 几乎可以做任何事情。人工智能中有许多框架可以帮助你。无论如何,我认为 stackoverflow 不适合提出这样的问题。

标签: python pandas powerbi


【解决方案1】:

您可以使用isin 在列中查找多个值。如果要基于多列进行过滤,则需要链接 lociloc 条件。基本上,无论您从 iloc 或 loc 返回什么,也是一个数据帧,下面是这两种情况的工作示例。

>>> import pandas as pd
>>> import numpy as np
>>> d = {'col1': [1, 2, 2, 3], 'col2': [3, 4, 5, 6], 'col3': ['NULL','NULL', np.nan, 'virgo']}
>>> df = pd.DataFrame(data=d)

我们将查询数据框以获取 col3 为 virgoNULL 的行

>>> df.loc[df['col3'].isin(['virgo','NULL'])]
   col1  col2   col3
0     1     3   NULL
1     2     4   NULL
3     3     6  virgo

现在我们将查询数据框以获取 col3 为 NULL 和 col2 为 4 的行

>>> df.loc[df['col3'] == 'NULL'].loc[df['col2'] == 4]
   col1  col2  col3
1     2     4  NULL

【讨论】:

    【解决方案2】:

    如果一个变量中的所有条件都满足:

    df [ df.column_name.isin([value_1, value_2, value_n]) ]
    

    如果多列中的条件满足

    df [ (df.column_1 == "value_1") & (df.column_2 == "value_2") & (df.column_n.isin([val_1, val_2, val_3])) ]
    

    注意: & 表示AND,因此如果(左和右)都为真,则结果为True,否则结果为False

    如果您需要OR 条件,请使用|

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多