df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(), 'B': 'one one two three two two one three'.split(), 'C': range(8), 'D': range(8) * 2})
result = df.loc[df['A'] == 'foo']
列值在可迭代对象中
使用isin方法选择列值在某个可迭代对象中的行。
1
result = df.loc[df['B'].isin(['one', 'three'])]
组合多个条件
使用&(逻辑与)和|(逻辑或)组合多个条件。注意使用括号来明确运算顺序。
1
result = df.loc[(df['C'] >= 2) & (df['C'] <= 5)]
2. 排除特定值
列值不等于标量
使用!=运算符来选择列值不等于某个标量的行。
1
result = df.loc[df['A'] != 'foo']
列值不在可迭代对象中
使用~(逻辑非)来否定isin方法的结果。
1
result = df.loc[~df['B'].isin(['one', 'three'])]
3. 其他选择方法
使用query方法
query方法提供了一种简洁的方式来筛选数据,尤其适用于复杂的条件。
1
result = df.query('A == "foo" and B in ["one", "three"]')
使用groupby方法
可以使用groupby方法根据某列的值进行分组,然后选择特定的组。
1 2
grouped = df.groupby('B') result = grouped.get_group('two')
# 创建DataFrame df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(), 'B': 'one one two three two two one three'.split(), 'C': np.arange(8), 'D': np.arange(8) * 2})