按对象分组的Pandas聚集

2024-04-26 14:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从groupby对象中收集一些关于数据块的统计信息。我必须将数据分块,因为有很多(1800万)行。我想找出每个块中每个组中的行数,然后将它们相加。我可以添加groupby对象,但是当一个术语中没有一个组时,结果是一个NaN。请看这个案例:

>>> df = pd.DataFrame({'X': ['A','B','C','A','B','C','B','C','D','B','C','D'],
                       'Y': range(12)})
>>> df
    X   Y
0   A   0
1   B   1
2   C   2
3   A   3
4   B   4
5   C   5
6   B   6
7   C   7
8   D   8
9   B   9
10  C  10
11  D  11
>>> df[0:6].groupby(['X']).count() + df[6:].groupby(['X']).count()
    Y
X    
A NaN
B   4
C   4
D NaN

但我想看看:

^{pr2}$

有什么好办法吗?请注意,在实际代码中,我正在通过每个groupby一百万行的分块迭代器循环。在


Tags: 数据对象信息dataframedfcountrangenan
1条回答
网友
1楼 · 发布于 2024-04-26 14:34:21

调用^{}并传递fill_value=0您可以在分块的同时迭代添加:

In [98]:

df = pd.DataFrame({'X': ['A','B','C','A','B','C','B','C','D','B','C','D'],
                       'Y': np.arange(12)})
df[0:6].groupby(['X']).count().add(df[6:].groupby(['X']).count(), fill_value=0)
Out[98]:
   Y
X   
A  2
B  4
C  4
D  2

相关问题 更多 >