Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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_Datetime_Pandas - Fatal编程技术网

Python 从数据列中的日期字符串列中提取年份

Python 从数据列中的日期字符串列中提取年份,python,datetime,pandas,Python,Datetime,Pandas,我有一个具有日期列的数据集: df.faultDate.head() 0 2014-07-13 1 2014-07-13 2 2014-07-12 3 2014-07-12 4 2014-07-13 我正试图从那以后再过几年 dt.datetime.strptime(df.faultDate[0], '%Y-%m-%d').year 2014 但是: df.faultDate.apply(dt.datetime.strtime,args=(“%Y-%m-%d

我有一个具有日期列的数据集:

df.faultDate.head()

0    2014-07-13
1    2014-07-13
2    2014-07-12
3    2014-07-12
4    2014-07-13
我正试图从那以后再过几年

dt.datetime.strptime(df.faultDate[0], '%Y-%m-%d').year

2014
但是:

df.faultDate.apply(dt.datetime.strtime,args=(“%Y-%m-%d”))
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1 df.faultDate.apply(dt.datetime.strtime,args=(“%Y-%m-%d”))
/home/shinny/anaconda3/lib/python3.4/site-packages/pandas/core/series.py在应用中(self、func、convert\u dtype、args、**kwds)
2058 values=lib.map\u推断(值,lib.Timestamp)
2059
->2060 mapped=lib.map\u expert(值,f,convert=convert\u数据类型)
2061如果len(映射)和isinstance(映射[0],系列):
2062从pandas.core.frame导入数据帧
pandas.lib.map_infer(pandas/lib.c:58435)()中的pandas/src/inference.pyx
/home/shinny/anaconda3/lib/python3.4/site-packages/pandas/core/series.py in(x)
2047
2048如果kwds或args不存在(func,np.ufunc):
->2049 f=λx:func(x,*args,**kwds)
2050年其他:
2051 f=func
TypeError:strTime()正好接受2个参数(给定9个)

在成功地将字符串转换为日期时间后,我也不确定如何传递
.year
参数。我可以编写一个包装器函数,将每一行作为输入,然后提取年份,但我认为了解如何应用pandas语法以供将来参考是很有用的。谢谢

我认为您需要的是针对实际对象而不是整个文件调用:

dt.datetime.strptime(df.faultDate[0], '%Y-%m-%d').year
变成

(df.faultDate[0]).apply(dt.datetime.strptime, args=('%Y-%m-%d’))

注意下标

我认为您需要的是针对实际对象而不是整个文件调用:

dt.datetime.strptime(df.faultDate[0], '%Y-%m-%d').year
变成

(df.faultDate[0]).apply(dt.datetime.strptime, args=('%Y-%m-%d’))

注意下标

我认为您需要的是针对实际对象而不是整个文件调用:

dt.datetime.strptime(df.faultDate[0], '%Y-%m-%d').year
变成

(df.faultDate[0]).apply(dt.datetime.strptime, args=('%Y-%m-%d’))

注意下标

我认为您需要的是针对实际对象而不是整个文件调用:

dt.datetime.strptime(df.faultDate[0], '%Y-%m-%d').year
变成

(df.faultDate[0]).apply(dt.datetime.strptime, args=('%Y-%m-%d’))
注意下标

Method#1(更好,IMHO):将其视为日期解析问题,之后我们可以使用
.dt
矢量化时间访问器

>>> pd.to_datetime(df.faultDate).dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
如果需要,我们可以指定格式:

>>> pd.to_datetime(df.faultDate, format="%Y-%m-%d").dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法2:将其视为字符串解析问题。在某些方面不太自然,但作为一个在其他场合可以派上用场的技巧的例子,还不错。我们可以使用矢量化字符串操作:

>>> df.faultDate.str[:4].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
Name: faultDate, dtype: int64
>>> df.faultDate.str.split("-").str[0].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法#1(更好,IMHO):将其视为一个日期解析问题,之后我们可以使用
.dt
向量化时间访问器

>>> pd.to_datetime(df.faultDate).dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
如果需要,我们可以指定格式:

>>> pd.to_datetime(df.faultDate, format="%Y-%m-%d").dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法2:将其视为字符串解析问题。在某些方面不太自然,但作为一个在其他场合可以派上用场的技巧的例子,还不错。我们可以使用矢量化字符串操作:

>>> df.faultDate.str[:4].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
Name: faultDate, dtype: int64
>>> df.faultDate.str.split("-").str[0].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法#1(更好,IMHO):将其视为一个日期解析问题,之后我们可以使用
.dt
向量化时间访问器

>>> pd.to_datetime(df.faultDate).dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
如果需要,我们可以指定格式:

>>> pd.to_datetime(df.faultDate, format="%Y-%m-%d").dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法2:将其视为字符串解析问题。在某些方面不太自然,但作为一个在其他场合可以派上用场的技巧的例子,还不错。我们可以使用矢量化字符串操作:

>>> df.faultDate.str[:4].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
Name: faultDate, dtype: int64
>>> df.faultDate.str.split("-").str[0].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法#1(更好,IMHO):将其视为一个日期解析问题,之后我们可以使用
.dt
向量化时间访问器

>>> pd.to_datetime(df.faultDate).dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
如果需要,我们可以指定格式:

>>> pd.to_datetime(df.faultDate, format="%Y-%m-%d").dt.year
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64
方法2:将其视为字符串解析问题。在某些方面不太自然,但作为一个在其他场合可以派上用场的技巧的例子,还不错。我们可以使用矢量化字符串操作:

>>> df.faultDate.str[:4].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
Name: faultDate, dtype: int64
>>> df.faultDate.str.split("-").str[0].astype(int)
0    2014
1    2014
2    2014
3    2014
4    2014
dtype: int64

谢谢我喜欢第一个版本。谢谢!我喜欢第一个版本。谢谢!我喜欢第一个版本。谢谢!我喜欢第一个版本。