获取数据框中自午夜以来所花费的时间

Ach*_*ich 3 timedelta python-datetime pandas

我有一个数据框,其中有一列时间戳类型。我想找到自午夜以来经过的时间(以秒为单位)作为新列。如何以简单的方式做到这一点?

例如:输入:

samples['time']
2018-10-01 00:00:01.000000000
2018-10-01 00:00:12.000000000
Run Code Online (Sandbox Code Playgroud)
type(samples['time'].iloc[0])

<class 'pandas._libs.tslib.Timestamp'>
Run Code Online (Sandbox Code Playgroud)

输出 :

samples['time_elapsed']
1
12
Run Code Online (Sandbox Code Playgroud)

Pon*_*ntz 5

当前的答案要么太复杂,要么太专业。

samples = pd.DataFrame(data=['2018-10-01 00:00:01', '2018-10-01 00:00:12'], columns=['time'], dtype='datetime64[ns]')

samples['time_elapsed'] = ((samples['time'] - samples['time'].dt.normalize()) / pd.Timedelta('1 second')).astype(int)

print(samples)
                 time  time_elapsed
0 2018-10-01 00:00:01             1
1 2018-10-01 00:00:12            12
Run Code Online (Sandbox Code Playgroud)
  • Normalize()从日期时间中删除时间部分(将时钟移回到午夜)。
  • pd.Timedelta('1 s')设置测量单位,即 timedelta 中的秒数。
  • .astype(int)将十进制秒数转换为 int。如果需要,请使用舍入功能。