为了账号安全,请及时绑定邮箱和手机立即绑定

试图在 DataFrame 的切片副本上设置一个值 - 尝试了以前的解决方案

试图在 DataFrame 的切片副本上设置一个值 - 尝试了以前的解决方案

富国沪深 2023-10-26 10:21:42
这个问题已经出现过很多次了,但是提议的答案似乎没有帮助。我有一个日期时间列,我正在尝试将其转换为 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() 后缀,但无济于事!有任何想法吗?
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

所以我发现我的问题,


它位于代码的前面,我最初从另一个数据帧中切出了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')

如果警告能更清楚地说明触发它的原因,那就太好了:)


查看完整回答
反对 回复 2023-10-26
  • 1 回答
  • 0 关注
  • 45 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信