Python 将字符串系列转换为datetimeobjects以提取月份和年份
使用Python3 for ML,我今天遇到的一个问题是。我有一个熊猫数据框,其中一列包含日期Python 将字符串系列转换为datetimeobjects以提取月份和年份,python,pandas,Python,Pandas,使用Python3 for ML,我今天遇到的一个问题是。我有一个熊猫数据框,其中一列包含日期 data['Allfast time'].head() 0 31-Dec-14 17:55:00 1 31-Dec-14 22:55:00 2 31-Dec-14 09:30:00 3 01-Jan-15 10:55:00 4 01-Jan-15 21:15:00 Name: Allfast time, dtype: object to_datetime()命令出现以下
data['Allfast time'].head()
0 31-Dec-14 17:55:00
1 31-Dec-14 22:55:00
2 31-Dec-14 09:30:00
3 01-Jan-15 10:55:00
4 01-Jan-15 21:15:00
Name: Allfast time, dtype: object
to_datetime()命令出现以下错误:
TypeError: object of type 'datetime.time' has no len()
如何创建一个新的列data['month'],该列仅包含从数据['Allfast time']中提取的月份
谢谢大家! 我认为您需要转换为datetime列Allfast time
,然后使用和:
错误消息意味着您的序列不仅包含字符串,而且在 至少有一个
datetime.time
对象。例如,可以通过以下方式再现错误消息:
In [35]: test = pd.Series(['31-Dec-14 17:55:00', DT.time(21,15,00),])
In [36]: pd.to_datetime(test)
TypeError: object of type 'datetime.time' has no len()
因此,要将这组混杂的对象转换为时间戳,请将errors='concurve'
传递到pd.to\u datetime
。无效的日期字符串和datetime.time
对象将被NaT
()对象替换:
屈服
0 12.0
1 12.0
2 12.0
3 1.0
4 1.0
5 NaN
6 1.0
7 1.0
Name: Allfast time, dtype: float64
由于
datetime.time
没有月份,因此最好指定NaN来表示缺少的月份。这些字符串在这里吗?如果是这样的话,data['month']=pd.to_datetime(data['Allfast time'])。dt.month
将起作用是的,确实如此!非常感谢。
import pandas as pd
import datetime as DT
df = pd.DataFrame(
{'Allfast time':
['31-Dec-14 17:55:00', '31-Dec-14 22:55:00', '31-Dec-14 09:30:00',
'01-Jan-15 10:55:00', '01-Jan-15 21:15:00',
DT.time(21,15,00), DT.date(2000,1,1), DT.datetime(2000,1,1,8,10,20)]})
df['Allfast time'] = pd.to_datetime(df['Allfast time'], errors='coerce')
print(df['Allfast time'].dt.month)
0 12.0
1 12.0
2 12.0
3 1.0
4 1.0
5 NaN
6 1.0
7 1.0
Name: Allfast time, dtype: float64