2017-12-11 1 views
-6

EDIT:
Ich habe folgende Datenmenge:Pandas Datenrahmen - wie zusammen verwenden fillna mit groupby für Zeitreihen

Datum, Tag, A, B, C
2015/03/23, Mo, 60085 , 105744,18623
2015/03/24, Di, 41472,70327,14775
2015/03/25, Wir, 46644,81693,17168
2015/03/26, Th, 43640,74615,15577
2015/03/27, Fr, 37503,67754,13278
2015/03/28, Sa ,,,
2015/03/29, Su ,,,
2015/03/30, Mo, 61904,108128,19600
2015/03/31, Tu, 48376,80326,17512
2015/04/01, We , 48529, 17815
2015/04/02, Th, 45491,74744,15524
2015/04/03, Fr ,,,
2015/04/04, Sa ,,,
2015/04/05, Su ,,,
2015/04/06, Mo ,,,
2015/04/07, Di, 65738,120412,19082
2015/04/08, Wir, 44792,81468,16796
2015/04/09, Th, 40930, 70810, 13664,
2015/10.04, Fr, 39367,60249,11882

Ich mag würde alle NA in Mo-Fr füllen mit entweder:
1) Die letzten Wochen Wert
2) Der Durchschnitt der vorherigen und nächste

auf 2015.04.01 So würde ich gerne haben:
1) 81693
2) (81693 + 81468) /2=81580.5

ich dachte, dass ich groupby zu verwenden wäre in der Lage und fillna mit ffill, aber ich bin mir nicht sicher, ob das möglich ist oder ob es das beste w ist ja.

+0

hat empfehle ich Ihnen, mehr Daten zu dieser Frage und auch, Liste, was aus diesen Daten Ihre erwartete Ergebnisse aussehen würde. Sehen Sie [diesen Beitrag] (https://stackoverflow.com/help/mcve), wie Sie Pandas so gut finden. –

Antwort

0

Ich nehme an, dass keines der Daten fehlt.

df['date'] = df['date].map(lambda x:datetime.strptime(x,"%d/%m/%Y")) 
df.sort_values(by=['date'],inplace=True) 
cols = ['v1','v2','v3','v4'] 
cols_last_week = [i+'_last_week' for i in cols] 
df[cols_last_week] = df[cols].shiftby(7) 

Sagen wir v1 nulls

df.loc[df['v1'].isnull(),'v1'] = df.loc[df['v1'].isnull(),'v1_last_week']