我打算使用以下内容删除不再需要的数据框中的所有行:
df = df[my_selection]
其中my_selection
是一系列布尔值。
稍后当我尝试按如下方式添加列时:
df['New column'] = pd.Series(data)
我得到了众所周知的"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"
这是否意味着df
实际上是其前身的一部分?
或者为什么我被指责为切片分配值?
演示代码:
import pandas as pd
data = {
'A': pd.Series(range(8)),
'B': pd.Series(range(8,0,-1))
}
df = pd.DataFrame(data)
df
输出:
A B
0 0 8
1 1 7
2 2 6
3 3 5
4 4 4
5 5 3
6 6 2
7 7 1
这会引发警告:
my_selection = df['A'] < 4
df = df[my_selection]
df['C'] = pd.Series(range(4))
这不会产生警告:
df = pd.DataFrame(data)
df['C'] = pd.Series(range(8))
我应该使用df.drop吗?