use*_*925 8 python datetime parsing dataframe pandas
我有一个包含时间戳的DF:
0 2005-08-31 16:39:40
1 2005-12-28 16:00:34
2 2005-10-21 17:52:10
3 2014-01-28 12:23:15
4 2014-01-28 12:23:15
5 2011-02-04 18:32:34
6 2011-02-04 18:32:34
7 2011-02-04 18:32:34
Run Code Online (Sandbox Code Playgroud)
我想从每个时间戳中提取年份,在DF中创建如下所示的附加列:
0 2005-08-31 16:39:40 2005
1 2005-12-28 16:00:34 2005
2 2005-10-21 17:52:10 2005
3 2014-01-28 12:23:15 2014
4 2014-01-28 12:23:15 2014
5 2011-02-04 18:32:34 2011
6 2011-02-04 18:32:34 2011
7 2011-02-04 18:32:34 2011
Run Code Online (Sandbox Code Playgroud)
显然,我可以查看所有DF条目,删除日期的前4个字符.哪个很慢.我想知道是否有一种快速的python方式来做到这一点.我看到可以通过DF = pd.to_datetime(DF,'%Y-%m-%d%H:%M:%S')将列转换为日期时间格式,但是当我尝试然后应用datetime时. datetime.year(DF)它不起作用.我还需要将时间戳解析为几个月和几年的组合等等......请帮助.谢谢.
EdC*_*ica 33
无需为每一行应用函数,您可以调用新的datetime属性来访问year属性:
In [35]:
df1['year'] = df1['timestamp'].dt.year
df1
Out[35]:
timestamp year
0 2005-08-31 16:39:40 2005
1 2005-12-28 16:00:34 2005
2 2005-10-21 17:52:10 2005
3 2014-01-28 12:23:15 2014
4 2014-01-28 12:23:15 2014
5 2011-02-04 18:32:34 2011
6 2011-02-04 18:32:34 2011
7 2011-02-04 18:32:34 2011
Run Code Online (Sandbox Code Playgroud)
如果您的时间戳是str,那么您可以使用pd.to_dateime以下命令转换为datetime64 :
df['timestamp'] = pd.to_datetime(df['timestamp'])
Run Code Online (Sandbox Code Playgroud)
您可以使用dt如上所述访问月份和其他属性.
对于之前的版本,0.15.0您可以执行以下操作:
df1['year'] = df1['timestamp'].apply(lambda x: x.year)
Run Code Online (Sandbox Code Playgroud)