dataframe 数据筛选称手小工具【mask】

mask指的是一个布尔数组,其大小和形状与DataFrame或Series相匹配,用于标记满足特定条件的元素,在数据筛选和条件选择中非常好用。

创建mask

最常见的方法是使用比较运算符(如==<><=>=!=)或逻辑运算符(如&|~)对DataFrame或Series进行操作。

import pandas as pd  

df = pd.DataFrame({  
    'A': [1, 2, 3, 4, 5],  
    'B': [10, 20, 30, 40, 50]  
})  
  
# 创建一个mask,选择A列大于2的行  
mask = df['A'] > 2  
print(mask)
0    False  
1    False  
2     True  
3     True  
4     True  
Name: A, dtype: bool

使用mask选择数据

一旦有了mask,你可以使用它来从DataFrame中选择数据。这通常是通过.loc[].iloc[]方法,或者直接在DataFrame上使用布尔索引来实现的。

# 使用loc
selected_rows = df.loc[mask]  
print(selected_rows)

'''A   B  
2  3  30  
3  4  40  
4  5  50
'''
#使用布尔索引
selected_rows = df[mask]  
print(selected_rows)

多条件mask

也可以使用逻辑运算符组合多个条件来创建一个更复杂的mask。

# 创建一个多条件mask,选择A列大于2且B列小于45的行  
complex_mask = (df['A'] > 2) & (df['B'] < 45)  
selected_rows = df.loc[complex_mask]  
print(selected_rows)

'''A   B  
2  3  30  
3  4  40'''

使用np.where和mask赋值

还可以使用mask与numpy.where函数结合来为DataFrame中的特定元素赋值。

import numpy as np  
  
# 使用mask和np.where为满足条件的行赋值  
# 如果A列的值大于2,则C列将包含字符串'满足条件';否则,它将包含字符串'不满足条件'
df['C'] = np.where(mask, '满足条件', '不满足条件')  
print(df)

使用|(或)和&(与)运算符结合多个mask

df = pd.DataFrame({  
    'A': [1, 2, 3, 4, 5],  
    'B': [10, 20, 30, 40, 50],  
    'C': [True, False, True, True, False]  
})  
  
# 创建两个mask  
mask1 = df['A'] > 2  
mask2 = df['C']  
  
# 结合两个mask(选择A列大于2或C列为True的行)  
combined_mask = mask1 | mask2  
selected_data = df[combined_mask]  
print(selected_data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值