载入的数据框变量为df2,包含两列信息,分别是datee及aqi;前者代表日期时间,后者代表分析指标aqi。
df2的“日期时间”列的格式为“yyyy/m/d”,这种格式无法按年份或者按月份进行分组统计,开展后续的分析。
如图所示,需要产生新的列,分别是“year”、“month”列,最终的结果是图中所示的。
这一步的实现有多种方法,这里采用最简单的方法,即取“datee”列(字符类型)的前四位字符,使用series.str[0:4]实现。
#载入库
import numpy as np
import pandas as pd
#增加列-年份:
df2['year']=df2['datee'].str[0:4]
#转换为日期时间格式
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”格式,但是千万不要使用第一步的方法去提取部分字符串,否则一定会失败的,我尝试多次,最终发现了这点;根本原因在于:此时该列的格式已经不是字符类型了,不能这样操作。
#建立过渡变量
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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号