python怎样从数据框的“日期时间”列提取出“年”、“月”列?

数据框“日期时间”列初始状态是这样的

载入的数据框变量为df2,包含两列信息,分别是datee及aqi;前者代表日期时间,后者代表分析指标aqi。

df2的“日期时间”列的格式为“yyyy/m/d”,这种格式无法按年份或者按月份进行分组统计,开展后续的分析。

python怎样从数据框的“日期时间”列提取出“年”、“月”列?

需要的最终状态是这样的

如图所示,需要产生新的列,分别是“year”、“month”列,最终的结果是图中所示的。

python怎样从数据框的“日期时间”列提取出“年”、“月”列?

实现第1步:产生“year”列

这一步的实现有多种方法,这里采用最简单的方法,即取“datee”列(字符类型)的前四位字符,使用series.str[0:4]实现。

#载入库
import numpy as np
import pandas as pd

#增加列-年份:
df2['year']=df2['datee'].str[0:4]

实现第2步:将“datee”列的数据类型进行转换处理,否则无法进行下一步

#转换为日期时间格式
df2.datee=pd.to_datetime(df2.datee)

df2.datee
0      2014-01-01
1      2014-01-02
2      2014-01-03
3      2014-01-04
4      2014-01-05
          ...    
2842   2021-11-26
2843   2021-11-27
2844   2021-11-28
2845   2021-11-29
2846   2021-11-30
Name: datee, Length: 2847, dtype: datetime64[ns]

完成这一步后,“datee”列的格式虽然统一为“yyyy-mm-dd”格式,但是千万不要使用第一步的方法去提取部分字符串,否则一定会失败的,我尝试多次,最终发现了这点;根本原因在于:此时该列的格式已经不是字符类型了,不能这样操作。

实现第3步:使用循环语句生成月份信息,再产生数据框新列

#建立过渡变量
df2m=[]

#逐步填充过渡变量
for i in range(len(df2)):
				df2m.append(df2.datee[i].month)

#产生新列'month'
df2['month']=df2m

这是达到目的的最可靠方法,虽然使用了过渡变量,略显复杂,但还是能够达到目的。

虽然感觉很合逻辑,但是下面的代码是通不过的,这经过多次检验了的;还是尊重python的语法规律吧。

#先产生新列,用0填充
df2['month']=np.zeros((2847,1))

#对新列内容进行更新,不能成功的!!!
for i in range(len(df2)):
    df2['month'][i]=df2.datee[i].month

展开阅读全文

页面更新:2024-04-25

标签:日期   时间   目的   数据   变量   字符   状态   类型   格式   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top