Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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 将字符串系列转换为datetimeobjects以提取月份和年份_Python_Pandas - Fatal编程技术网

Python 将字符串系列转换为datetimeobjects以提取月份和年份

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()命令出现以下

使用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()命令出现以下错误:

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