我很确定Pandas中的~
是布尔not
。我找到了几个StackOverflow问题/答案,但没有指向官方文档的指针。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
df = pd.DataFrame([(1, 2, 1),
(1, 2, 2),
(1, 2, 3),
(4, 1, 612),
(4, 1, 612),
(4, 1, 1),
(3, 2, 1),
],
columns=['groupid', 'a', 'b'],
index=['India', 'France', 'England', 'Germany', 'UK', 'USA',
'Indonesia'])
print(df)
filtered = df[~(df['a'] == 2)]
print(filtered)
df是
groupid a b
India 1 2 1
France 1 2 2
England 1 2 3
Germany 4 1 612
UK 4 1 612
USA 4 1 1
Indonesia 3 2 1
和filtered
是
groupid a b
Germany 4 1 612
UK 4 1 612
USA 4 1 1
所以我很确定它不是布尔值。
答案 0 :(得分:6)
~
是__invert__
dunder的运算符,它已被明确覆盖,用于在pd.DataFrame
/ {{1上执行矢量化逻辑反转对象。
pd.Series
注意:Dunder方法不能直接在代码中使用,总是更喜欢使用运算符。
此外,既然您已经问过,Boolean Indexing上的部分描述了它的使用。
另一个常见的操作是使用布尔向量来过滤 数据。运算符为:
s = pd.Series([True, False]) ~s 0 False 1 True dtype: bool s.__invert__() 0 False 1 True dtype: bool
|
,or
为&
,and
为~
。这些 必须使用括号进行分组。
大胆强调我的。
答案 1 :(得分:1)
我在this页面上找到了它。它大概是一半,我用ctrl + F导航到它。你是对的,它是not
运算符。
答案 2 :(得分:1)
Here他们明确定义:
另一个常见的操作是使用布尔向量来过滤 数据。运营商是:| for or,& for和,〜for not 。这些 必须使用括号进行分组。
答案 3 :(得分:0)
如果你去:https://docs.python.org/3/library/operator.html,它说:
Bitwise Inversion ~ a invert(a)