首页 > 解决方案 > 附加后尝试在 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

标签: pythonpandas

解决方案


出现此警告是因为您的数据框“表”是切片的副本。这并不容易知道为什么,但这与您如何进入数据框的当前状态有关。

要修复此错误,您可以将第二次出现的 'table[Cname][Rname] = True' 行替换为

table.loc[Rname,Cname] = True

推荐阅读