1
我有一个timestamp
的列,其中时间戳是按以下格式大熊猫:提取日期和时间从时间戳
2016-06-16T21:35:17.098+01:00
我想从中提取的日期和时间。我做了以下几点:
import datetime as dt
df['timestamp'] = df['timestamp'].apply(lambda x : pd.to_datetime(str(x)))
df['dates'] = df['timestamp'].dt.date
这工作了一段时间。但突然间并没有。
如果我再这样做df['dates'] = df['timestamp'].dt.date
我收到以下错误
Can only use .dt accessor with datetimelike values
幸运的是,我已经保存的数据帧与dates
以csv,但我现在想在格式创建另一列time
23:00:00.051
编辑
从原始数据文件(15万个样本),该timestamp
柱看起来李柯以下(前5个样品):
timestamp
0 2016-06-13T00:00:00.051+01:00
1 2016-06-13T00:00:00.718+01:00
2 2016-06-13T00:00:00.985+01:00
3 2016-06-13T00:00:02.431+01:00
4 2016-06-13T00:00:02.737+01:00
以下命令
df['timestamp'] = df['timestamp'].apply(lambda x : pd.to_datetime(str(x)))
的timestamp
柱看起来像dtype
如D型细胞后:datetime64 [NS]
0 2016-06-12 23:00:00.051
1 2016-06-12 23:00:00.718
2 2016-06-12 23:00:00.985
3 2016-06-12 23:00:02.431
4 2016-06-12 23:00:02.737
然后终于
df['dates'] = df['timestamp'].dt.date
0 2016-06-12
1 2016-06-12
2 2016-06-12
3 2016-06-12
4 2016-06-12
编辑2
发现了错误。我已经清理了数据并将数据帧保存在csv文件中,因此我不必再次进行清理。当我读取csv时,时间戳dtype
更改为对象。现在我该如何解决这个问题?
好吧,这意味着你有一些duff值,所以你可以强制这些duff值为'NaT':'df ['timestamp'] = pd.to_datetime(df ['timestamp'],errors ='coerce')'then你可以使用'dropna'来除掉这些值,然后你可以像以前一样调用'dt.date' – EdChum
'df.timestamp.isnull()。sum()'返回0 –
对不起,除非你发布你的原始数据和代码有错误,那么这将成为一个假设的姿势练习浪费时间 – EdChum