考虑这个例子:
import pandas as pd
import numpy as np
foo = pd.DataFrame(dict(letter=['a', 'a', 'a', 'b', 'b', 'b', 'a', 'b'],
number=[1,1,2,2,3,np.nan, np.nan,4]))
grouped = foo.groupby(foo.number)
print grouped['letter'].transform(lambda x: sum(x=='a'))
Out[18]:
0 2
1 2
2 1
3 1
4 0
5 b
6 a
7 0
不是在 5
和 6
行上显示 1
,而是 'a'
和 ' b'
被显示出来,大概是因为 groupby 是在 np.nan
值上建立索引的。有没有什么办法可以阻止这种情况发生,而不用用一些虚拟变量替换 nan
值?另外 - 为什么会发生这种情况?
最佳答案
pandas 文档在这里对此进行了解释:http://pandas.pydata.org/pandas-docs/stable/missing_data.html
NAN 被排除在外,这与 R 一致。
早期版本的 Pandas 确实包含它们,但它们已被删除。
关于python - 确保 groupby 输出类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054394/