python - 附加后尝试在 DataFrame 中的切片副本上设置值
问题描述
我有一个空的 pandas 数据框,想向其中添加新行,然后更改其值。我发现在附加第一行时间并更改其值之后没有问题,但是如果我附加第二行,它会引发A 值正在尝试从 DataFrame警告的切片副本上设置。
任何可能的解决方案来避免这个问题?
可重现的例子:
import pandas as pd
table = pd.DataFrame({'A':[], 'B':[]})
newrow = {'A':False, 'B':False}
Cname = 'A'
Rname = 'a'
oldindex = list(table.index )
table = table.append(newrow, ignore_index = True)
table.index = oldindex + [Rname]
table[Cname][Rname] = True
Rname = 'b'
oldindex = list(table.index )
table = table.append(newrow, ignore_index = True)
table.index = oldindex + [Rname]
table[Cname][Rname] = True
解决方案
出现此警告是因为您的数据框“表”是切片的副本。这并不容易知道为什么,但这与您如何进入数据框的当前状态有关。
要修复此错误,您可以将第二次出现的 'table[Cname][Rname] = True' 行替换为
table.loc[Rname,Cname] = True
推荐阅读
- android - 离子 V5 电容器 - cordova-plugin-media 错误代码 1
- amazon-sagemaker - 将单个模型端点转换为多模型端点
- html - 为什么 Markdown 页面无法在我的 Github Pages 网站上正确呈现?
- unity3d - C# Unity Prefabs 不会出现在 Canvas 上
- javascript - Am4Charts 轴渲染器绘制额外的网格线
- .net - .Net Core 3.1 中的“System.MissingMethodException:'No parameterless constructor defined for type XXX'”的问题
- javascript - 卸载组件时删除导入的样式
- python - 计算 csv 文件中一个小时的时间跨度之间的记录
- html - Primeng密码模板建议没有出现
- asp.net - ASP.Net Core WebApi Project 创建空解决方案