标签:Python与Excel,pandas
接着《对比Excel,更强大的Python pandas筛选》,我们继续讲解pandas数据框架中的高级筛选,涉及到OR、AND、NOT逻辑。
准备用于演示的数据框架
本文继续使用世界500强公司数据集。首先,我们激活pandas并从百度百科加载数据。下面附上了数据表的屏幕截图,以便于参考。
import pandas as pd
df = pd.read_html('https://baike.baidu.com/item/%E4%B8%96%E7%95%8C500%E5%BC%BA/640042?fr=aladdin')[1]
图1
条件组合
当需要满足其中一个条件时,使用OR逻辑。例如,要获得所有中国和德国的世界500强公司,意味着我们希望总部所在国家要么是中国,要么是德国。注意:
df_1 = df.loc[(df['总部所在国家'] == '中国') | (df['总部所在国家'] == '德国')]
图2
在上面的代码中,我们在.loc[]中有两个布尔索引。下面是一个简化的Excel示例,演示|运算符的含义。

图3
交集
当需要满足两个(或更多)条件时,使用AND逻辑。例如,我们可以了解有多少中国500强公司的利润大于500亿美元。
df_2 = df.loc[(df['总部所在国家'] == '中国') &(df['利润(百万美元)'] > 5000)]
图4
同样,我们需要使用按位AND运算符“&”,并用一对括号将条件括起来。下面的Excel示例显示了&的含义。

图5
相反
要选择相反面,我们需要使用NOT逻辑运算符。按位NOT是“~”。下面是一个Excel示例。

图6
要选择不在美国的所有公司,可以使用下面的代码:
df_3 = df.loc[~(df['总部所在国家'] == '美国')]或者:
df_3 = df.loc[df['总部所在国家'] != '美国']
图7
注:本文学习整理自pythoninoffice.com。