我相信我的问题非常简单,并且必须有一个非常简单的方法来解决这个问题,但是因为我对Python很新,所以我无法解决它。我看到了一些类似的问题,但没有一个真正与我所面临的问题有关。

我有一个数据帧,其中时间由"Timestamp"列设置,格式为YYYY-MM-DD HH:MM:SS。我的目标是在整个秒内绘制此列,因此将所有此Datatime转换为从索引0开始到最后一个索引的秒数。基本上,我的第一个元素和最后一个元素之间的差异应该以秒为单位显示,我希望以秒为单位的计数从“Timestamp”列的第一个element(0s)开始。最后,我将它绘制为我的x和速度,我的情况自然比我在这里发布的场景更复杂,因为我正在将外部文件加载到dataframe中,并且它们可能会以不同的间隔显示时间戳。

            Timestamp      Category  ...      Status          Speed
0     2017-07-23 22:00:00         1  ...          1               1
1     2017-07-23 22:00:01         1  ...          1               1
2     2017-07-23 22:00:02         1  ...          1               1.1
3     2017-07-23 22:00:03         1  ...          1               1.2
4     2017-07-23 22:00:04         1  ...          1               1.2
5     2017-07-23 22:00:05         1  ...          1               1.2
6     2017-07-23 22:00:06         1  ...          1               1.2
7     2017-07-23 22:00:07         1  ...          1               1.2
8     2017-07-23 22:00:08         1  ...          1               1.2

35999 2017-07-23 22:59:59         0  ...          1               2.3

希望我能够简洁明了。我真的很感谢你对这个的帮助!

分析解答

使用Timedeltas通过Series.sub减去第一个值并通过Series.dt.total_seconds转换为秒:

df['td'] = df['Timestamp'].sub(df['Timestamp'].iat[0]).dt.total_seconds()

如果有所有秒,那么从0到DataFrame的长度范围。

所以相同的输出是:

df['td'] = range(len(df))

要么:

df['td'] = df.index

如果需要秒:

df['td'] = pd.to_timedelta(df['Timestamp'].dt.strftime(%H:%M:%S)).dt.total_seconds()