2014-07-09 1 views
2

데이터의 하위 집합 만 유효한 (일부 '외부'이유로) 시간 색인 DataFrame이 있습니다.희소성이 짙은 팬더 군

나는 유효한 데이터와 내 DataFrame에 마스크로 사용할 수 있도록 데이터가 무효 NaN 초 동안 시간 색인 Series1의의를 만들었습니다.

Series은 스파 스입니다.

import pandas as pd 
import numpy as np 

rng = pd.date_range(start='2014-07-09', periods=5, freq='D') 
data = np.random.randn(len(rng), 3) 
col_names = ['spam', 'ham', 'eggs']  
df = pd.DataFrame(data=data, index=rng, columns=col_names)  
valid_days = np.nan * np.ones_like(df.spam.values) 
valid_days[2] = 1  
validity_mask = pd.SparseSeries(data=valid_days, index=rng) 

내가 대신 나에게 비 NaN의 spam, ham, eggs 1 개 세트를 제공 df.mul(validity_mask, axis=0)을 예상, 내가 가지고 : 대답은 물론, 하나는 우리가 번성하기 전에 dense으로 캐스팅 할 필요가있다

In [2]: df.mul(validity_mask, axis=0) 
AssertionError: length mismatch: 5 vs. 3 

답변

1

을 .

   spam  ham  eggs 
2014-07-09  NaN  NaN  NaN 
2014-07-10  NaN  NaN  NaN 
2014-07-11 1.943166 -0.342399 -0.31517 
2014-07-12  NaN  NaN  NaN 
2014-07-13  NaN  NaN  NaN 

나는 내가 Pandasbinary operations docsthe Sparse data structure docs 단순히 말하는 "기능적으로, 자신의 행동에 명시 적 캐스트에 대해 아무것도 찾을 수 없습니다 여기에 이러는거야 :

df.mul(validity_mask.to_dense(), axis=0) 

은의 예상 결과를 제공 그들의 조밀 한 대응에 거의 동일해야한다. "