处理pandas.drop函数时,True
和False
语句的列表会删除前两行。为什么?这是一个错误吗?
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
答案 0 :(得分:3)
不,这不是错误,只是True
和False
等于1
和0
此代码:
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函数:
df.drop(df[[False, False, True]].index)
foo
0 1
1 2
或者只是通过倒置掩蔽:
df[~pd.Series([False, False, True])]
foo
0 1
1 2