Python熊猫添加两个数据框SettingWithCopyWarning

问题描述 投票:0回答:1

我不明白为什么我按照官方文档的指示进行操作时会收到可怕的警告。

我们有一个dataframe称为a

a = pd.DataFrame(data = [['Tom',1],
                         ['Tom',1], 
                         ['Dick',1], 
                         ['Dick',1], 
                         ['Harry',1],
                         ['Harry',1]], columns = ['Col1', 'Col2'])

a

Out[377]: 
    Col1  Col2
0    Tom     1
1    Tom     1
2   Dick     1
3   Dick     1
4  Harry     1
5  Harry     1

首先我们创建一个“持有人” dataframe

holder = a

然后我们创建a的子集:

c = a.loc[a['Col1'] == 'Tom',:]

c

Out[379]: 
  Col1  Col2
0  Tom     1
1  Tom     1

我们创建另一个子集d,它将被添加到先前子集c的(一个[切片中,但是一旦我们尝试将d添加到c,我们将得到警告:

d = a.loc[a['Col1'] == 'Tom','Col2'] d Out[389]: 0 1 1 1 c.loc[:,'Col2'] += d C:\Users\~\anaconda3\lib\site-packages\pandas\core\indexing.py:494: SettingWithCopyWarning: 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 See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy self.obj[item] = s
我想了解自己在做错什么,因为我经常使用此逻辑(来自R,那里的一切都不是织补object
python arrays pandas slice
1个回答
0
投票
注意到其他问题后,我找到了解决方案。
© www.soinside.com 2019 - 2024. All rights reserved.