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)
博客介绍了Pandas中mask的使用。mask是与DataFrame或Series匹配的布尔数组,用于数据筛选和条件选择。内容涵盖创建mask的常见方法,使用mask选择数据、创建多条件mask、结合mask赋值,以及用或与运算符结合多个mask。
1209

被折叠的 条评论
为什么被折叠?



