2017-02-28 17 views
3

나는 다음과 같은 예를 가지고 :파이썬 - 팬더 - GROUPBY와 "AGG"- 유모로 집계 설정이 그룹은 유모가 포함 된 경우

내가 그 열 'B'를 갖고 싶은
index_ = pd.date_range('2001-01-01', '2010-12-31', freq = 'MS') 
df_ = pd.DataFrame(np.random.randn(len(index_), 4), columns=list('ABCD'), index = index_) 
df_.loc['2009-01-01','A'] = np.nan 
df_.loc['2007-08-01','B'] = np.nan 
df_.groupby(pd.TimeGrouper('A')).agg({'A': np.sum, 'B': np.mean}) 

2007 년과 열의 NaN입니다 'A'는 2009 년에 NaN입니다. 어떻게 달성 될 수 있습니까? Numpy 배열에 배열이 nan 값을 포함하면 NaN을 반환하기 때문에 np.sum 함수를 시도했습니다. 이것은 여기서 사용하고자하는 "agg"명령으로 변환 할 수 있습니까?

답변

4

당신은 summean에서 매개 변수 skipna=False를 사용할 수 있습니다

np.random.seed(100) 
index_ = pd.date_range('2001-01-01', '2010-12-31', freq = 'MS') 
df_ = pd.DataFrame(np.random.randn(len(index_), 4), columns=list('ABCD'), index = index_) 
df_.loc['2009-01-01','A'] = np.nan 
df_.loc['2007-08-01','B'] = np.nan 
df = df_.groupby(pd.TimeGrouper('A')).agg({'A': lambda x: x.sum(skipna=False), 
              'B': lambda x: x.mean(skipna=False)}) 
print (df) 
        B   A 
2001-12-31 0.184784 0.593025 
2002-12-31 -0.251913 -1.720891 
2003-12-31 -0.085896 -3.060836 
2004-12-31 -0.327153 6.561670 
2005-12-31 0.214115 3.400988 
2006-12-31 0.270536 2.972164 
2007-12-31  NaN 4.175623 
2008-12-31 0.429060 -2.917714 
2009-12-31 0.222544  NaN 
2010-12-31 -0.339483 2.021474