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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/40992976/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 00:18:25  来源:igfitidea点击:

Python - Convert datetime column into seconds

pythonpandas

提问by ScoutEU

I have a date column (called 'Time') which contains days/hours/mins etc (timedelta). I have created a new column in my dataframe and I want to convert the 'Time' column into seconds and put it in the new column for each row.

我有一个日期列(称为“时间”),其中包含天/小时/分钟等(timedelta)。我在我的数据框中创建了一个新列,我想将“时间”列转换为秒并将其放入每行的新列中。

Does anyone have any pointers? All I can find on the internet is how to convert your column, not create a new column and convert another one.

有没有人有任何指示?我在互联网上所能找到的只是如何转换您的列,而不是创建一个新列并转换另一个列。

Thank you in advance!

先感谢您!

回答by jezrael

I think you need total_seconds:

我认为你需要total_seconds

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

Sample:

样本:

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

If need cast to int:

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

回答by Manuel Salgueiro

Let's assume your DataFrame's name is df.

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

If you want to create a new column with the seconds you should do the following:

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

df['newColumn'] = df['Time'].dt.total_seconds()