2016-09-12 3 views
1

Я бег groupby() на моих данных, как это:Как я могу построить свой результат groupby()?

user.groupby(["DOC_ACC_DT", "DOC_ACTV_CD"]).agg("sum")["SUM_DOC_CNT"] 

, что приводит к этим сгруппированным данным:

DOC_ACC_DT DOC_ACTV_CD 
2015-07-01 BR    1 
      PT    1 
2015-07-02 BR    1 
      PT    1 
2015-07-06 BR    1 
      PT    1 
2015-07-08 BR    1 
2015-07-09 AD    2 
      PT    1 
2015-07-13 AD    50 
      BR    52 
      PT    1 
2015-07-14 AD    6 
      BR    5 
      PT    1 
2015-07-16 BR    1 
      PT    1 
2015-07-23 AD    13 
      BR    14 
      PT    3 
2015-07-27 BR    1 
      PT    1 

То, что я хочу сделать сейчас, это просто заговор DOC_ACTV_CD. Пожалуйста, не делайте пробелов между днями, поэтому мне нужно будет заполнить нулевые значения между днями, когда ничего не произошло, например.

2015-07-23 AD    13 
      BR    14 
      PT    3 
2015-07-25 BR    1 
      PT    1 

бы стать

2015-07-23 AD    13 
      BR    14 
      PT    3 
2015-07-24 AD    0 
      BR    0 
      PT    0 
2015-07-25 AD    0 
      BR    1 
      PT    1 

, прежде чем я построить временные ряды для AD, BR и PT в одном участке. Какой самый быстрый способ сделать это?

ответ

2

Вы можете использовать:

df = user.groupby(["DOC_ACC_DT", "DOC_ACTV_CD"]).agg("sum")["SUM_DOC_CNT"] 
df.unstack().resample('D').replace(np.nan,0).plot() 
+0

Да, это работает! Спасибо – displayname

+0

Спасибо. Он возвращает предупреждение, проблема связана с функцией ['fillna (0)'] (http://stackoverflow.com/q/39452095/2901002). – jezrael

Смежные вопросы