时间读为时间增量,前面有很多天

我正在处理过去一年左右的睡眠数据集。我已经将CSV读入了熊猫数据框。其中有一个名为的列'Duration'。我将其转换为timeDelta,如下所示:


df.Duration = pd.to_timedelta(df.Duration)

df.Duration.head()

哪个输出


0   17711 days 08:27:00

1   17711 days 07:56:00

2   17711 days 04:22:00

3   17711 days 07:29:00

4   17711 days 06:46:00

Name: Duration, dtype: timedelta64[ns]

我有点理解为什么我会在工作时间前得到17711天,但我真正想要的只是工作时间。为了解决这个问题,我可以写


df.Duration = (df.Duration - pd.Timedelta('17711 days'))

这给了我


0   08:27:00

1   07:56:00

2   04:22:00

3   07:29:00

4   06:46:00

Name: Duration, dtype: timedelta64[ns]

但是,这是一种非常脆弱的方法。有一种更好的方法来获取我想要的时间吗?


慕尼黑5688855
浏览 160回答 2
2回答

MYYA

datetime.timdelta对象将天,秒和微秒存储为属性。我们可以在访问它们pandas.DataFrame有dt:设置一些虚拟数据import datetime as dtimport pandas as pddf = pd.DataFrame(    data=(        dt.timedelta(days=17711, hours=i, minutes=i, seconds=i) for i in range(0, 10)    ),     columns=['Duration'])print(df['Duration'])             Duration0 17711 days 00:00:001 17711 days 01:01:012 17711 days 02:02:023 17711 days 03:03:034 17711 days 04:04:045 17711 days 05:05:056 17711 days 06:06:067 17711 days 07:07:078 17711 days 08:08:089 17711 days 09:09:09Name: Duration, dtype: timedelta64[ns]加快秒数,将其转化为小时print(df['Duration'].dt.seconds / 3600)0    0.0000001    1.0169442    2.0338893    3.0508334    4.0677785    5.0847226    6.1016677    7.1186118    8.1355569    9.152500Name: Duration, dtype: float64    只有几个小时print(df['Duration'].dt.seconds // 3600)0    01    12    23    34    45    56    67    78    89    9Name: Duration, dtype: int64
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python