在pandas中删除一系列true false会删除前两行

时间:2015-08-11 13:49:07

标签: python pandas

处理pandas.drop函数时,TrueFalse语句的列表会删除前两行。为什么?这是一个错误吗?

df = pd.DataFrame({"foo":[1,2,3]})
df.drop([False, False, True])
   foo
2    3

同样只给它一个False列表只会删除第一行。

df = pd.DataFrame({"foo":[1,2,3]})
df.drop([False, False, False])
   foo
1    2
2    3

1 个答案:

答案 0 :(得分:3)

解释为什么会发生这种情况

不,这不是错误,只是TrueFalse等于10

的副作用

此代码:

df = pd.DataFrame({"foo":[1,2,3]})
df.drop([False, False, True])

与此代码相同:

df = pd.DataFrame({"foo":[1,2,3]})
df.drop([0, 0, 1])

pandas drop函数会删除一个标记列表,而不是掩码。

如何正确使用drop方法

使用掩码删除数据的正确方法是掩码,然后访问索引并将其交给drop函数:

df.drop(df[[False, False, True]].index)
   foo
0    1
1    2

或者只是通过倒置掩蔽:

df[~pd.Series([False, False, True])]
   foo
0    1
1    2