如何在pandas中将datetime实例连接到日期?

时间:2016-10-12 13:32:56

标签: datetime 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

1 个答案:

答案 0 :(得分:1)

我认为groupby需要dt.date

#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

使用resample的另一个解决方案,但需要dropna删除NaN行:

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