我正在尝试从数据块的 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
但我想看到:
>>> df[0:6].groupby(['X']).count() + df[6:].groupby(['X']).count()
Y
X
A 2
B 4
C 4
D 2
有没有好的方法可以做到这一点?请注意,在实际代码中,我正在循环遍历每个 groupby 一百万行的分块迭代器。
Call add http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.add.html#pandas.DataFrame.add并通过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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)