如何根据布尔标准拆分数据框?

kjo*_*kjo 8 pandas

假设这df是一个pandas数据帧.我想根据一些标准将其拆分为两个数据帧.我发现这样做的最好方法是

df0, df1 = [v for _, v in df.groupby(df['class'] != 'special')]
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,标准是groupby方法的参数.结果df0class字段具有值的子数据帧组成'special',并且df1基本上是补充df0.(不幸的是,使用这种结构,首先返回由符合标准的项组成的子数据帧,这是不直观的.)

上述构造具有以下缺点:它不是特别可读的,当然不像例如某些假设splitby方法那样可读

df0, df1 = df.splitby(df['class'] == 'special')
Run Code Online (Sandbox Code Playgroud)

由于分割像这样的数据帧是我经常需要做的事情,因此我认为可能存在内置函数,或者可能是已建立的习惯用法.如果是的话,请告诉我.

And*_*den 8

我认为最可读的方法是:

m = df['class'] != 'special'
a, b = df[m], df[~m]
Run Code Online (Sandbox Code Playgroud)

我没有遇到过这种特殊方法......

  • 我可能会做`d = dict(list(df.groupby(df ["class"]!="b")))`然后使用`d [0]`/`d [False]`和`d [1 ]`/`d [True]`而不是. (3认同)