【学习笔记】Datetime 数据转换时 ‘A value is trying to be set on a copy of a slice from a DataFrame’ 错误处理

这篇博客讲述了在使用pandas处理Datetime数据时遇到的'SettingWithCopyWarning'错误。错误发生在尝试将整数类型的数据转换为日期时,直接修改DataFrame的切片导致。解决方法是先复制DataFrame的切片到新变量,然后在新变量上进行操作。文章提供了错误代码示例和修正后的代码,帮助读者理解并避免这种常见的Pandas警告。
摘要由CSDN通过智能技术生成

在获取Datetime数据时,有时候需要吧数字数据(如20200413)转化为时间序列,直接用parse转换时出现‘A value is trying to be set on a copy of a slice from a DataFrame’ 错误提示,我在网上看别人的解决方法,感觉没有说清楚,这个错误是因为Datefream数据使用=赋值时,传入变量的是原数据的映射,如果修改变量,则相当于修改原始数据,错误警告是提示不应该有此套娃行为。

错误代码如下:

import pandas as pd
from dateutil.parser import parse
xg = '000700'
dt_factor = pd.read_csv(open(r'D:\python project\数据储存\%s stock_factor.csv' % xg), encoding='UTF-8', index_col=0)
fac_max = dt_factor['adj_factor'].max()
dt_factor['factor_q'] = dt_factor['adj_factor']/fac_max
for i in dt_factor.index:
    dt_factor['trade_date'][i] = parse(str(dt_factor['trade_date'][i])).date()
print(dt_factor)

这里的目的是为了将20200413(数据类型是int)转化为时间序列,使用了parse方法。

运行结果

D:/python project/text2.py:10: SettingWithCopyWarning: 
A valu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值