python dataframe日期运算常见的报错及解决方法 |
您所在的位置:网站首页 › ranges翻译 › python dataframe日期运算常见的报错及解决方法 |
1、背景描述:(日期加减计算经常遇到的报错)
数据分析中要对日期进行计算,经常遇到这些报错或问题: TypeError: cannot subtract DatetimeArray from ndarrayTypeError: unsupported operand type(s) for -: ‘DatetimeArray’ and ‘datetime.date’TypeError: unsupported operand type(s) for -: ‘DatetimeArray’ and ‘str’ 2、问题根本原因及解决方法:根本原因:两个参与计算的日期类型不一致导致。通常情况是一个类型是datetime.date, 而另一个是timestamps.Timestamp。这样就导致了上述的这些报错信息! 解决方法: 统一转换为日期类型(datetime.date)来计算 df[“date”] = df[“date”].map(lambda x: datetime.strptime(x, “%Y.%m.%d”).date())统一转换为时间戳(timestamps.Timestamp)的类型来计算; df[“date”] = df[“date”].map(lambda x: datetime.strptime(x, “%Y.%m.%d”))直接使用pd.to_datetime() 函数来将所有日期转换为时间戳类型来计算 3、问题解决(示例代码 python) 3.1 建立含有日期的数据表(任务:与输入的登录日期“2021/10/15”进行计算) from datetime import * # 3.1 建立含日期的数据表 set1 = {"date1": ["2021.09.15", "2021.09.17", "2020.03.20", "2021.01.15", "2020.01.25"], "values": [10, 50, 20, 40, 30]} df = pd.DataFrame(set1, columns=["date1", "values"])
正确的转换为日期类型(datetime.date)方式为: # 正确转换为日期类型(datetime.date)的方式: df["date1"] = df["date1"].map(lambda x: datetime.strptime(x, "%Y.%m.%d").date()) print("date1的数据类型:", type(df["date1"][1])) df
结论:问题已经解决,没有再报错! 温馨提示: 日期计算后的数据是不能直接使用的(xxx days),需要提取时间差值并转换为数字类型 # 将计算之后的时间差值提取出来的代码: df["time"] = df["time"].astype("str").map(lambda x: x.split()) df["time"] = df["time"].str[0].astype(int) df |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |