熊猫:忽略NaN的意思的功能在哪里

时间:2015-03-19 15:07:44

标签: python pandas

我有一些数据框,我想在其上做一些groupby-apply:

dftest = df1.append(test2).set_index('date')
doWhat = {'foo' : np.sum, 'bar': np.sum, 'employment_total' : np.mean}

employment_total在某些地方NaN,但不是到处都是:

>>> sum(np.isnan(dftest.employment_total))
404394
>>> sum(np.isnan(dftest.employment_total) == False)
6864

但是,当我创建月平均值时,到处都是NaN - 我猜是因为我使用的是np.mean

aggASS = dftest.groupby(['state', pd.TimeGrouper("M", label='left'), 'status']).agg(doWhat)
>>> aggASS.loc[np.isnan(aggASS.employment_total) == False]
Empty DataFrame
Columns: [shopping_weighted, employment_total]
Index: []

我需要使用doWhat,因为我对不同的列使用不同的聚合度量。我尝试在计算之前找到删除pandas.mean的{​​{1}}函数,但我无法找到它。它在哪里?

1 个答案:

答案 0 :(得分:2)

您可以将均值参数作为字符串'mean'传递,它将使用the pandas version,默认情况下会跳过nans。

import pandas as pd

df = pd.DataFrame(data={'x':[1, 2, 3, 4, pd.np.nan], 'y':['a', 'a', 'a', 'b', 'b']})

funcs = {'x':'mean'}

print(df.groupby('y').agg(funcs))
#    x
# y   
# a  2
# b  4