出乎意料:Pandas DataFrame是它以前的一部分吗?

时间:2018-02-16 05:39:09

标签: python pandas dataframe variable-assignment slice

我打算使用以下内容删除不再需要的数据框中的所有行:

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吗?

0 个答案:

没有答案