Pandas Groupby结果到一个单独的数据框中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas Groupby结果到一个单独的数据框中相关的知识,希望对你有一定的参考价值。

假设有一个包含100条记录的数据框,其中包含4(或n)列,下面是数据框的示例:

 id  target   col3   col4
 00     0      ..     .. 
 00     0      ..     ..
 00     0      ..     ..
 01     1      ..     ..
 01     1      ..     ..
 01     0      ..     ..
 01     1      ..     ..
 02     1      ..     ..
 02     0      ..     ..
 02     1      ..     ..
 02     0      ..     ..
 ..
 ..

基于此数据框,我想创建一个新的数据框,该数据框是此数据框上的group_by和特定列(目标)的value_counts的结果。

我已经弄清楚了如何获取这些值(我当前的代码):

for id, target in df.group_by('id'):
    print(id)
    print(group.target.value_counts())

将给我以下输出:

00
0    3
Name: target, dtype: int64
01
0    1
1    3
Name: target, dtype: int64
02
0    2
1    2
Name: target, dtype: int64
..
..

我能够获得这些值,但似乎无法将这些值传递到一个空的数据框中。我想创建一个新的数据框,以这种格式表示此信息:

id   0   1
00   3  NaN
01   1   3
02   2   2
..
..
答案

这是一种方法:

(df
 .groupby('id')
 .apply(lambda f: f['target'].value_counts().to_frame())
 .unstack()
 .reset_index(drop=True))

以上是关于Pandas Groupby结果到一个单独的数据框中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pandas 数据框中从 groupby 的结果生成所有值对

如何使用 Groupby 将 Pandas TA 应用于数据框

Python Pandas 如何将 groupby 操作结果分配回父数据框中的列?

Pandas将groupby操作的结果保存为原始数据框中的新列[关闭]

pandas 中的新列 - 通过应用列表 groupby 将系列添加到数据框

没有聚合单个结果的 Pandas Groupby