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

Pandas 如何根据布尔标准拆分数据帧?,pandas,Pandas,假设df是pandas数据帧。我想根据一些标准把它分成两个数据帧。我找到的最好的方法是 df0, df1 = [v for _, v in df.groupby(df['class'] != 'special')] 在上面的示例中,标准是groupby方法的参数。生成的df0由子数据帧组成,其中类字段具有值“特殊”,而df1基本上是df0的补充。(不幸的是,使用这种构造,首先返回由不符合条件的项组成的子数据帧,这是不直观的。) 上面的构造有一个缺点,即它不是特别可读的,当然不像某些假设的spl

假设
df
pandas
数据帧。我想根据一些标准把它分成两个数据帧。我找到的最好的方法是

df0, df1 = [v for _, v in df.groupby(df['class'] != 'special')]
在上面的示例中,标准是
groupby
方法的参数。生成的
df0
由子数据帧组成,其中
字段具有值
“特殊”
,而
df1
基本上是
df0
的补充。(不幸的是,使用这种构造,首先返回由不符合条件的项组成的子数据帧,这是不直观的。)

上面的构造有一个缺点,即它不是特别可读的,当然不像某些假设的
splitby
方法那样可读

df0, df1 = df.splitby(df['class'] == 'special')

由于像这样拆分数据帧是我经常需要做的事情,因此我认为可能有一个内置函数,或者可能有一个既定的习惯用法。如果是这样,请告诉我。

我认为最具可读性的方法是:

m = df['class'] != 'special'
a, b = df[m], df[~m]

我没有遇到一种特殊的方法来解决这个问题……

我可能会使用
d=dict(list(df.groupby(df[“class”!=“b”)
然后使用
d[0]
/
d[False]
d[1]
/
d[True]
。@DSM实际上,groupby可能是一种更好的存储方法(!)@AndyHayden:你是什么意思?如果可以通过groupby的(伪)键来处理它的内容,那就太好了,但是它不起作用;i、 e.
df.groupby(df.class!=“b”)[True]
抛出错误。。。我不知道如何在不将groupby对象转换为dict的情况下执行此类操作……但我的意思是,当您可以通过
g.get_group(True)
访问时,为什么要转换为dict?