将时间转换为总秒数
Covert Time to total seconds
我想从现有的 'TimeMajor' 列创建一个新列 'Time',该列将包含总秒数形式的时间,其内容将是整数类型。例如,
00:00:05 = 5 secs
00:14:10 = 850 secs
02:30:10 = 9010 secs
代码:
data["TimeMajor"] = pd.to_datetime(data["created_at"])
data['Time'] = data.TimeMajor.dt.time
data['Time'].timedelta.total_seconds()
给出:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-47-d7912fbaf9b4> in <module>()
----> 1 data['Time'].timedelta.total_seconds()
/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in __getattr__(self, name)
5272 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5273 return self[name]
-> 5274 return object.__getattribute__(self, name)
5275
5276 def __setattr__(self, name: str, value) -> None:
AttributeError: 'Series' object has no attribute 'timedelta'
首先转换为 timedelta
dtype,使用 datetime
列中 time
组件的等效字符串 'data["TimeMajor"]':
import pandas as pd
data = pd.DataFrame({'TimeMajor': pd.to_datetime(['2020-06-12 02:30:10'])})
data['Timedelta'] = pd.to_timedelta(data['TimeMajor'].dt.time.astype(str))
data['Timedelta'].dt.total_seconds()
# 0 9010.0
# Name: Timedelta, dtype: float64
或直接到列 'Time':
data['Time'] = pd.to_timedelta(data['TimeMajor'].dt.time.astype(str)).dt.total_seconds()
...或者如果你有一个参考日期,你想从中计算秒数,你甚至不需要明确地转换为 timedelta:
refdate = pd.to_datetime('2020-06-12')
data['Timedelta'] = data['TimeMajor'] - refdate
我想从现有的 'TimeMajor' 列创建一个新列 'Time',该列将包含总秒数形式的时间,其内容将是整数类型。例如,
00:00:05 = 5 secs
00:14:10 = 850 secs
02:30:10 = 9010 secs
代码:
data["TimeMajor"] = pd.to_datetime(data["created_at"])
data['Time'] = data.TimeMajor.dt.time
data['Time'].timedelta.total_seconds()
给出:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-47-d7912fbaf9b4> in <module>()
----> 1 data['Time'].timedelta.total_seconds()
/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in __getattr__(self, name)
5272 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5273 return self[name]
-> 5274 return object.__getattribute__(self, name)
5275
5276 def __setattr__(self, name: str, value) -> None:
AttributeError: 'Series' object has no attribute 'timedelta'
首先转换为 timedelta
dtype,使用 datetime
列中 time
组件的等效字符串 'data["TimeMajor"]':
import pandas as pd
data = pd.DataFrame({'TimeMajor': pd.to_datetime(['2020-06-12 02:30:10'])})
data['Timedelta'] = pd.to_timedelta(data['TimeMajor'].dt.time.astype(str))
data['Timedelta'].dt.total_seconds()
# 0 9010.0
# Name: Timedelta, dtype: float64
或直接到列 'Time':
data['Time'] = pd.to_timedelta(data['TimeMajor'].dt.time.astype(str)).dt.total_seconds()
...或者如果你有一个参考日期,你想从中计算秒数,你甚至不需要明确地转换为 timedelta:
refdate = pd.to_datetime('2020-06-12')
data['Timedelta'] = data['TimeMajor'] - refdate