python - 确保 groupby 输出类型

标签 python numpy pandas

考虑这个例子:

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

不是在 56 行上显示 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/

相关文章:

python - Keras - 数据集的数据生成器太大而无法放入内存

python - 将公司名称列表变成股票行情

python - 计算多个时间序列平均值的快速方法?

python - 无需转换即可读取日期时间 Pandas

python - 根据 Pandas 中的字符串列表过滤掉行

python - 用 Pandas 从一行中移动一列

python - Unicode解码错误: 'ascii' codec can't decode byte 0xc3 in position 7601: ordinal not in range(128)

python - 读取两个图像作为一个图像Python

python - NumPy 中不一致的高级索引

python - Theano 中的逆 FFT