2017-12-11 3 views
-6

EDIT fillnaを使用するには:パンダデータフレーム - どのように時系列に対してGROUPBYと一緒

日付、曜日、A、B、C
2015/3月23日、モリブデン、60085:私は、次のデータセットを持っている
を、105744,18623
2015/3月24日、火、41472,70327,14775
2015/3月25日、私たちは、46644,81693,17168
2015/03/26のTh、43640,74615,15577
2015/03/27、Fr、37503,67754,13278
2015/03/28、Sa ,,,
2015/3月29日、蘇,,,
2015/3月30日、モリブデン、61904,108128,19600
2015/3月31日、火、48376,80326,17512
2015/4月1日、当社は、 、48529、17815
2015/04/02のTh、45491,74744,15524
2015/4月3日、神父,,,
2015/04/04、サ,,,
2015/04/05、蘇,,,
2015/4月6日、Moの,,,
2015/4月7日、火、65738,120412,19082
2015/4月8日、私たちは、44792,81468,16796
2015/04/09、Th、40930,70810,13664私はどちらかと月-FRのすべてのNAを埋めるしたいと思います 2015/4月10日、FR、39367,60249,11882


1)前の週値
2)前回の平均値と次

だから、2015年4月1日に私が持っているしたいと思います:
1)81693
2)(81693 + 81468)/2=81580.5

私はGROUPBYを使用することができるだろうと思いましたとfillnaとfillnaしかし、私はそれが可能かどうか、またはそれが最高のw ay。

+0

を持っているとしましょう。どのように良いパンダの質問に[この記事(https://stackoverflow.com/help/mcve)を参照してください。 –

答えて

0

私は日付のどれも欠けていると仮定しています。

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) 

のは、v1は、私はあなたがこの質問に多くのデータを追加しても、そのデータから、あなたの期待される結果がどのように見えるかをリストアップすることをお勧めしますヌル

df.loc[df['v1'].isnull(),'v1'] = df.loc[df['v1'].isnull(),'v1_last_week'] 
関連する問題