将DataFrameGroupBy对象转换为DataFrame pandas

use*_*428 30 python pandas

我有一个数据帧并在FIPS中做了一个groupby并总结了那些运行良好的组.

kl = ks.groupby('FIPS')

kl.aggregate(np.sum)
Run Code Online (Sandbox Code Playgroud)

我只想要一个普通的Dataframe,但我有一个pandas.core.groupby.DataFrameGroupBy对象.

jor*_*ris 18

结果kl.aggregate(np.sum)是一个正常的数据帧,你就必须把它分配给一个变量,以进一步使用它.随机数据:

>>> df = DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
>>>                         'foo', 'bar', 'foo', 'foo'],
...                  'B' : ['one', 'one', 'two', 'three',
...                         'two', 'two', 'one', 'three'],
...                  'C' : randn(8), 'D' : randn(8)})
>>> grouped = df.groupby('A')
>>> grouped
<pandas.core.groupby.DataFrameGroupBy object at 0x04E2F630>
>>> test = grouped.aggregate(np.sum)
>>> test
            C         D
A                      
bar -1.852376  2.204224
foo -3.398196 -0.045082
Run Code Online (Sandbox Code Playgroud)

  • 调用 .reset_index() 来转换分组索引。 (3认同)
  • 实际上,许多 DataFrameGroupBy 对象方法(例如(apply、transform、aggregate、head、first、last))都会返回 DataFrame 对象。我在我的博客文章的[一个](https://kenandeen.wordpress.com/2015/06/20/unisex-names-data-analysis-use-case/)中使用了“filter”方法。 (2认同)
  • 这不是一个完全正常的DataFrame。例如,如果尝试在GroupBy对象上调用.info()方法,则会得到“ AttributeError:无法访问'DataFrameGroupBy'对象的可调用属性'info',请尝试使用'apply'方法。” (2认同)

小智 12

 df_g.apply(lambda x: x) 
Run Code Online (Sandbox Code Playgroud)

将返回原始数据帧.

  • 但是为什么需要这个呢? (7认同)
  • @CK 我明白了,谢谢。然而,我的观点更多的是如果 df_g 本身是原始 DataFrame,为什么我们需要这个方法来返回原始 DataFrame?如果是 apply 的作用以及如何将函数应用到每个组的问题,那么这是另一篇文章的讨论。2c (2认同)