将日期时间列拆分为日期和时间 Python

3 投票
3 回答
20854 浏览
提问于 2025-04-18 13:46

嘿,我看到有很多人问过这个问题,不过我还没能成功解决我的困扰。

我有一列时间,格式是这样的:

2014-07-17 00:59:27.400189+00

我想把它分成两列,一列是日期,另一列是时间。

我用了这个方法:

 posts['Date']=pd.to_datetime(posts['Time'],format='%Y-%m-%d %H:%M:%S')

但是,我遇到了一个错误。

 ValueError: unconverted data remains: 400189+00

我不太确定最后那部分信息该怎么标记。我试着加了 %o,但又出现了另一个错误。

 ValueError: 'o' is a bad directive in format '%Y-%m-%d %H:%M:%S.%o'

有没有什么办法可以把这两个值分成两列呢?

谢谢!

3 个回答

0
import pandas as pd 

data = pd.DataFrame({'Date':['2014-07-17 00:59:27.400189+00']})

data['Dates'] = pd.to_datetime(data['Date'], format='%Y:%M:%D').dt.date
data['Hours'] = pd.to_datetime(data['Date'], format='%Y:%M:%D').dt.time

这段话的意思是,我得到的是日期和时间的对象类型。但我希望的列应该是日期格式。

2

这个对我有效

import pandas as pd 

data = pd.DataFrame({'Date':['2014-07-17 00:59:27.400189+00']})

data['Dates'] = pd.to_datetime(data['Date'], format='%Y:%M:%D').dt.date
data['Hours'] = pd.to_datetime(data['Date'], format='%Y:%M:%D').dt.time

你必须要有

print(data)

Dates           Hours
2014-07-17     00:59:27.400189+00
7

下面这个对我有效:

In [18]:

import pandas as pd
df = pd.DataFrame({'Date':['2014-07-17 00:59:27.400189+00']})
df.dtypes
Out[18]:
Date    object
dtype: object
In [19]:

df['Date'] = pd.to_datetime(df['Date'])
df.dtypes
Out[19]:
Date    datetime64[ns]
dtype: object
In [20]:

df['Time'],df['Date']= df['Date'].apply(lambda x:x.time()), df['Date'].apply(lambda x:x.date())
df
Out[20]:
         Date             Time
0  2014-07-17  00:59:27.400189

[1 rows x 2 columns]

撰写回答