Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将日期列转换为已用秒数_Python_Pandas_Datetime_Dataframe - Fatal编程技术网

Python 将日期列转换为已用秒数

Python 将日期列转换为已用秒数,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我有一个由多列组成的数据框架,其中一列是datetime64[ns]数据。时间是HH:MM:SS格式。如何将这列日期转换为一列经过的秒数?如果时间是10:00:00秒,那就是36000。秒应为float64类型格式 示例数据列 它会起作用: df['time'].dt.total_seconds() 关于新答案 将文本转换为Timedelta df['Origin Time(Local)'] = pd.to_timedelta(df['Origin Time(Local)']) df['Sec

我有一个由多列组成的数据框架,其中一列是datetime64[ns]数据。时间是HH:MM:SS格式。如何将这列日期转换为一列经过的秒数?如果时间是10:00:00秒,那就是36000。秒应为float64类型格式

示例数据列

它会起作用:

df['time'].dt.total_seconds()

关于新答案


将文本转换为
Timedelta

df['Origin Time(Local)'] = pd.to_timedelta(df['Origin Time(Local)'])
df['Seconds'] = df['Origin Time(Local)'].dt.total_seconds()

旧答案

考虑数据帧
df

df = pd.DataFrame(dict(Date=pd.date_range('2017-03-01', '2017-03-02', freq='2H')))

                  Date
0  2017-03-01 00:00:00
1  2017-03-01 02:00:00
2  2017-03-01 04:00:00
3  2017-03-01 06:00:00
4  2017-03-01 08:00:00
5  2017-03-01 10:00:00
6  2017-03-01 12:00:00
7  2017-03-01 14:00:00
8  2017-03-01 16:00:00
9  2017-03-01 18:00:00
10 2017-03-01 20:00:00
11 2017-03-01 22:00:00
12 2017-03-02 00:00:00

从时间戳中减去最近的一天,然后使用
总秒数
total_seconds
Timedelta
的一个属性。我们通过计算两系列时间戳之间的差值,得到一系列时间增量

(df.Date - df.Date.dt.floor('D')).dt.total_seconds()
# equivalent to
# (df.Date - pd.to_datetime(df.Date.dt.date)).dt.total_seconds()

0         0.0
1      7200.0
2     14400.0
3     21600.0
4     28800.0
5     36000.0
6     43200.0
7     50400.0
8     57600.0
9     64800.0
10    72000.0
11    79200.0
12        0.0
Name: Date, dtype: float64

把它放在一个新的专栏里

df.assign(seconds=(df.Date - df.Date.dt.floor('D')).dt.total_seconds())

                  Date  seconds
0  2017-03-01 00:00:00      0.0
1  2017-03-01 02:00:00   7200.0
2  2017-03-01 04:00:00  14400.0
3  2017-03-01 06:00:00  21600.0
4  2017-03-01 08:00:00  28800.0
5  2017-03-01 10:00:00  36000.0
6  2017-03-01 12:00:00  43200.0
7  2017-03-01 14:00:00  50400.0
8  2017-03-01 16:00:00  57600.0
9  2017-03-01 18:00:00  64800.0
10 2017-03-01 20:00:00  72000.0
11 2017-03-01 22:00:00  79200.0
12 2017-03-02 00:00:00      0.0

我正在从datetime import datetime以
的形式导入datetime模块。
我得到的“DatetimeProperties”对象没有属性“total_seconds”错误。如何解决此问题?请尝试:df['time']=pd.to_datetime(df['time'])@FdMon我遇到了与Fanylion相同的错误,仍然无法使用pd.to_datetime()解决此问题。如果我的某些日期列具有object属性,该怎么办?导入时,我的某些文件有一个对象数据类型而不是日期时间类型,即使它的时间格式相同。@Fanylion然后使用
df.Date=pd.to_datetime(df.Date)
Hmm预处理。当我这样做时,我得到的数据不能转换为日期时间。可能是因为我导入模块的方式(从datetime导入datetime)。我认为您的数据与您所说的不同。我不会花更多的时间猜测你的数据,因为你可以很容易地编辑你的文章并向我显示数据。我添加了我的数据图片。整个专栏很长,所以我不能全部发表。该列的类型为pandas.core.series.series,每个元素都是datetime.time类型。