2016-10-12 13 views
1

私はタイムスタンプを持つデータセットを持っています。現在、タイムスタンプデータを回帰モデルに取り込むことはできません。 私は、タイムスタンプデータを特定の日付に連結し、同じ日付に属する行をグループ化したいと考えました。はどうすればいいですか?日時インスタンスをpandasの日付に連結する方法は?

例のデータは、今は、インデックスおよびすべての水曜日の行する日付は、距離と時間を追加する単一の行を形成するように組み合わせることができるたい

print(processed_df.head()) 
         date  day isWeekend distance  time 
15 2016-07-06 14:43:53.923 Tuesday  False  0.000 239.254 
17 2016-07-07 09:24:53.928 Wednesday  False  0.000 219.191 
18 2016-07-07 09:33:02.291 Wednesday  False  0.000 218.987 
37 2016-07-14 22:03:23.355 Wednesday  False  0.636 205.000 
46 2016-07-14 23:51:49.696 Wednesday  False  0.103 843.000 

を設定します。

私の同じ試み。

print(new_df.groupby('date').mean().head()) 

         distance  time 
date          
2016-07-06 14:43:53.923  0.0 239.254 
2016-07-07 09:24:53.928  0.0 219.191 
2016-07-07 09:33:02.291  0.0 218.987 
2016-07-07 11:28:26.920  0.0 519.016 
2016-07-08 11:59:02.044  0.0 398.971 

これは失敗しました。

所望の出力

  distance time 
    date          
2016-07-06 0.0 239.254 
2016-07-07 0.0 957.194 
2016-07-08 0.0 398.971 
+0

は何ですか慾望d出力?それはなぜ失敗するのですか? – jezrael

+0

ちょうど希望の@jezraelを追加しました。 –

答えて

1

私はあなたがdt.dategroupbyが必要だと思う:resampleで別の解決

#cast if dtype is not datetime 
df.date = pd.to_datetime(df.date) 

print (df.groupby([df.date.dt.date])['distance', 'time'].mean()) 
      distance  time 
date       
2016-07-06 0.0000 239.254 
2016-07-07 0.0000 219.089 
2016-07-14 0.3695 524.000 

が、その後dropnaNaN行を削除必要があります。

print (df.set_index('date').resample('D')['distance', 'time'].mean()) 
      distance  time 
date       
2016-07-06 0.0000 239.254 
2016-07-07 0.0000 219.089 
2016-07-08  NaN  NaN 
2016-07-09  NaN  NaN 
2016-07-10  NaN  NaN 
2016-07-11  NaN  NaN 
2016-07-12  NaN  NaN 
2016-07-13  NaN  NaN 
2016-07-14 0.3695 524.000 

print (df.set_index('date').resample('D')['distance', 'time'].mean().dropna()) 
      distance  time 
date       
2016-07-06 0.0000 239.254 
2016-07-07 0.0000 219.089 
2016-07-14 0.3695 524.000 
+0

ありがとうございました。 –

関連する問題