Python - 将日期时间列转换为秒数

29
我有一个日期列(称为“时间”),其中包含天/小时/分钟等(时间差)。我在数据框中创建了一个新列,我想要创建一个将“时间”列转换为秒的新列。
我找到了如何转换列的方法。如何从现有的时间差列的秒转换中创建一个新列?
2个回答

57

我认为你需要使用total_seconds函数:

print (df['col'].dt.total_seconds())

示例:

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

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

如果需要转换为 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

谢谢Jezreal。正是我需要的 :)...我花了很多时间在谷歌上搜索,不知道为什么我不直接来这里。我想这有助于我的学习过程 x) - Nicholas
2
对我来说不起作用。这里是错误 AttributeError: 'DatetimeProperties' 对象没有属性 'total_seconds'。 - Krissh
1
@Krissh - 你需要使用 total_seconds 函数与已填入timedelta的时间差列一起使用,而不是像 df['date1'].dt.total_seconds() 那样用于datetime列。 - jezrael

7
假设你的DataFrame名称为df。如果你想创建一个新的列,其中包含秒数,你需要执行以下操作:
df['newColumn'] = df['Time'].dt.total_seconds()

5
点赞了!但如果您的日期时间列是索引,则无法使用。 - PirateApp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接