我收到一个奇怪的SettingWithCopyWarning
警告,并将其缩小到以下示例(pandas 0.19.1)
import pandas as pd
data = pd.DataFrame(index=['a','b'])
data['col1'] = [1, -1]
data['col2'] = [2, 4]
data.col2 = 0.1 * data.col2
data.col1[data.col1 < 0] = 0
如果我执行最后一行或第二行到最后一行,我不会获得SettingWithCopyWarning
。以下两个片段中的任何一个都不会引发警告,但如果我同时执行这两个语句,则会收到警告。有人知道为什么吗?我应该如何修改代码,以免收到警告?我想在课堂上使用它,我无法解释这种行为。
# this works
data = pd.DataFrame(index=['a','b'])
data['col1'] = [1, -1]
data['col2'] = [2, 4]
data.col2 = 0.1 * data.col2
#data.col1[data.col1 < 0] = 0
# this also works
data = pd.DataFrame(index=['a','b'])
data['col1'] = [1, -1]
data['col2'] = [2, 4]
#data.col2 = 0.1 * data.col2
data.col1[data.col1 < 0] = 0