python – 确保groupby输出类型

考虑这个例子:

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值?另外 – 为什么会这样?

最佳答案 大熊猫文档在这里解释: http://pandas.pydata.org/pandas-docs/stable/missing_data.html

NAN被排除在外,这与R一致.

早期版本的Pandas确实包含了它们,但它们已被删除.

点赞