python - 试图在来自 DataFrame 的切片副本上设置一个值 - 尝试了以前的解决方案
问题描述
这已经出现了很多,但提出的答案似乎没有帮助。
我有一个日期时间列,我正在尝试将其转换为 d/m/yh:m 格式。
我正在使用以下代码:
change_details.loc[:, 'Planned Start Date'] = change_details['Planned Start Date'].dt.strftime('%d %m, %Y %h:%m')
按照以前的答案,这应该是防止此警告的正确方法,但我仍然得到它:
A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
我也尝试使用 .copy() 后缀无济于事!
有任何想法吗?
解决方案
所以我发现了我的问题,
它在代码的早期,我最初是从另一个数据帧中切分 change_details 的。
change_details = gdp_sched_today[[start_date', 'end_date']]
change_details.columns = ['Planned Start Date', 'Planned End Date']
change_details['Planned Start Date'] = change_details['Planned Start Date'].dt.strftime('%d/%m/%Y %h:%M')
change_details['Planned End Date'] = change_details['Planned End Date'].dt.strftime('%d/%m/%Y %H:%M')
我可以通过在第一行添加 .copy() 来解决这个问题,确保 Pandas 知道我打算将其作为副本而不是视图。
change_details = gdp_sched_today[[start_date', 'end_date']].copy()
change_details.columns = ['Planned Start Date', 'Planned End Date']
change_details['Planned Start Date'] = change_details['Planned Start Date'].dt.strftime('%d/%m/%Y %h:%M')
change_details['Planned End Date'] = change_details['Planned End Date'].dt.strftime('%d/%m/%Y %H:%M')
如果警告能更清楚地说明触发它的原因,那肯定会很好:)
推荐阅读
- c# - 创建动态按钮 C#
- android - 在 Odoo 移动框架中具有 odoo 功能的 OColumn 不起作用
- python - KERAS CUSTOM LOSS 中的错误“TypeError:传递给参数 'reduction_indices' 的值的 DataType float32 不在允许值列表中:int32,int64”
- python - 如何管理华为GSM调制解调器的音频进出文件?
- angular - 如何创建基于模型类的响应?
- java - Java根据优先级执行方法SYNC/ASYNC
- lisp - lisp 将值传递给函数?
- php - 这是在mysql中使用AND,OR的正确方法吗?
- typescript - 如何调试'npm ERR!403 在大多数情况下,您或您的依赖项之一正在请求您的安全策略禁止的包版本。
- angular - 将 NGX-DataTable 与 NGX-Formly 一起使用时如何向模型添加新行