【发布时间】:2019-06-03 23:46:19
【问题描述】:
如果我计算一个 groupby 对象的平均值并且在其中一个组中有一个 NaN(s),那么 NaN 将被忽略。即使应用 np.mean 它仍然只返回所有有效数字的平均值。我希望一旦有一个 NaN 在组内,就会返回 NaN 的行为。这是行为的简化示例
import pandas as pd
import numpy as np
c = pd.DataFrame({'a':[1,np.nan,2,3],'b':[1,2,1,2]})
c.groupby('b').mean()
a
b
1 1.5
2 3.0
c.groupby('b').agg(np.mean)
a
b
1 1.5
2 3.0
我想收到以下结果:
a
b
1 1.5
2 NaN
我知道我可以预先替换 NaN,并且我可能可以编写自己的聚合函数,以便在 NaN 在组内时立即返回 NaN。但是,此功能不会被优化。
您知道使用优化函数实现所需行为的参数吗?
顺便说一句,我认为所需的行为是在以前版本的 pandas 中实现的。
【问题讨论】:
-
Pandas 的这种行为是可怕的......所提出的解决方案都没有使像
np.mean()这样的标准函数能够正常工作(返回 NaN)
标签: python pandas dataframe nan