记录pandas
中关于时间的两个处理技巧
datatimens
类型的转化import pandas as pd
from datetime import datetime
import time
当我们导入包含日期数据的时候,有时候需要进行前期的处理,比如:读进来一份包含年月字段的数据
df.dtypes # datetime64[ns]类型数据
当查看数据字段信息的时候发现,发现它是datetime64[ns]
类型。
目的是想获取年月信息,去掉最后的01
,只取前面的年月,当直接使用split
方法的时候,报错如下:
1、先转成字符串类型
df["年月"] = df["年月"].apply(lambda x: x.strftime('%Y-%m-%d'))
2、对字符串数据使用split
方法
df["年月"] = df["年月"].apply(lambda x: x.split("-")[0] + "-" + x.split("-")[1].split("-")[0])
3、如何将字符串又转成datetime64[ns]的数据类型??
df["年月"] = pd.to_datetime(df["年月"], format = "%Y-%m-%d")
1、记录?一次时分秒时间的处理。有平均时长这样一个字段:时:分:秒
2、想将上述时长全部转成秒:小时*24+分钟*60+秒
1、转成字符串并单独取出时分秒
# 1、先转成字符串
df["平均访问时长"] = df["平均访问时长"].apply(lambda x: x.strftime('%H-%M-%S')) # 先转成字符串
# 2、切割出时分秒
df["小时"] = df["平均访问时长"].apply(lambda x: x.split("-")[0])
df["分钟"] = df["平均访问时长"].apply(lambda x: x.split("-")[1].split("-")[0]) # df["平均访问时长"].apply(lambda x: x.split("-")[-2]) 倒数第二位
df["秒"] = df["平均访问时长"].apply(lambda x: x.split("-")[-1]) # 取出倒数第一位数据
2、检查时、分、秒的统计情况
3、分钟
的特殊处理
pandas中判断某个字符串的开始和结尾字符:startswith()、endswith()
;使用了if循环来进行判断:
for i in range(len(df)):
if df.loc[i,"分钟"].startswith("0") == True and df.loc[i,"分钟"].endswith("0") == False: # 08
df.loc[i,"分钟"] = df.loc[i,"分钟"].split("0")[1]
elif df.loc[i,"分钟"].startswith("0") == False: # 30
df.loc[i,"分钟"] = df.loc[i,"分钟"]
elif df.loc[i,"分钟"] == "00": # 00则赋值为0
df.loc[i,"分钟"] = "0"
4、处理过后的数据(分钟)
5、计算总共的时长(秒为单位)
需要将每个字符串的数据转成int类型,再进行处理
# 时长:分钟*60 + 秒
for i in range(len(df)):
df.loc[i,"时长"] = int(df.loc[i,"分钟"]) * 60 + int(df.loc[i,"秒"])
df