Python - 将datetime列转换为秒

Sco*_*tEU 14 python pandas

花了很长时间试图找到这个,但卡住了.

我有一个日期列(称为"时间"),其中包含天/小时/分钟等(timedelta).我在我的数据框中创建了一个新列,我希望将'Time'列转换为秒,并将其放在每一行的新列中.

有没有人有任何指针?我在互联网上找到的就是如何转换列,而不是创建新列并转换另一列.

先感谢您!

jez*_*ael 27

我想你需要total_seconds:

print (df['col'].dt.total_seconds())
Run Code Online (Sandbox Code Playgroud)

样品:

df = pd.DataFrame({'date1':pd.date_range('2015-01-01', periods=3),
                   'date2':pd.date_range('2015-01-01 02:00:00', periods=3, freq='23H')})

print (df)
       date1               date2
0 2015-01-01 2015-01-01 02:00:00
1 2015-01-02 2015-01-02 01:00:00
2 2015-01-03 2015-01-03 00:00:00

df['diff'] = df['date2'] - df['date1']
df['seconds'] = df['diff'].dt.total_seconds()

print (df)
       date1               date2     diff  seconds
0 2015-01-01 2015-01-01 02:00:00 02:00:00   7200.0
1 2015-01-02 2015-01-02 01:00:00 01:00:00   3600.0
2 2015-01-03 2015-01-03 00:00:00 00:00:00      0.0
Run Code Online (Sandbox Code Playgroud)
df['diff'] = df['date2'] - df['date1']
df['diff'] = df['diff'].dt.total_seconds()

print (df)
       date1               date2    diff
0 2015-01-01 2015-01-01 02:00:00  7200.0
1 2015-01-02 2015-01-02 01:00:00  3600.0
2 2015-01-03 2015-01-03 00:00:00     0.0
Run Code Online (Sandbox Code Playgroud)

如果需要施放到int:

df['diff'] = df['date2'] - df['date1']
df['diff'] = df['diff'].dt.total_seconds().astype(int)

print (df)
       date1               date2  diff
0 2015-01-01 2015-01-01 02:00:00  7200
1 2015-01-02 2015-01-02 01:00:00  3600
2 2015-01-03 2015-01-03 00:00:00     0
Run Code Online (Sandbox Code Playgroud)

  • 不为我工作。这是错误 AttributeError: 'DatetimeProperties' 对象没有属性 'total_seconds' (3认同)

小智 5

让我们假设您的 DataFrame 的名称是df.

如果你想用秒创建一个新列,你应该执行以下操作:

df['newColumn'] = df['Time'].dt.total_seconds()
Run Code Online (Sandbox Code Playgroud)

  • 赞成!但如果您的日期时间列是索引则不起作用 (5认同)