【Python】探索 Pandas 中的 where 方法:条件筛选的利器


那年夏天我和你躲在 这一大片宁静的海
直到后来我们都还在 对这个世界充满期待
今年冬天你已经不在 我的心空出了一块
很高兴遇见你 让我终究明白
回忆比真实精彩
                     🎵 王心凌《那年夏天宁静的海》


在数据分析中,Pandas 是一个强大且灵活的工具包,为数据操作和分析提供了丰富的功能。where 方法是 Pandas 中一个非常实用的功能,它允许我们基于条件筛选和处理数据。本文将详细介绍 where 方法的用法,帮助你在数据处理中更高效地进行条件筛选和替换操作。

什么是 where 方法?

where 方法用于基于一个布尔条件筛选 DataFrame 或 Series 中的元素。它保留满足条件的元素,对于不满足条件的元素,where 方法可以将其替换为指定的值(默认情况下为 NaN)。

where 方法的基本语法

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)

cond: 一个布尔条件,可以是 DataFrame 或 Series。元素为 True 的位置会保留原值,False 的位置会被替换。
other: 替换值,默认是 NaN。
inplace: 是否在原 DataFrame 上进行操作,默认为 False。如果设为 True,将在原 DataFrame 上进行修改。
axis: 应用条件的轴,默认为 None。
level: 如果目标是 MultiIndex(层次化索引),可以指定级别。
errors: 错误处理方式,默认为 ‘raise’。
try_cast: 尝试转换到相同的类型,默认为 False。

基本用法示例

以下是一些具体示例,展示如何在不同场景下使用 where 方法。

示例 1:基于条件筛选

假设我们有一个包含学生成绩的 DataFrame,我们希望筛选出所有及格(分数>=60)的成绩,其余的替换为 NaN。

import pandas as pd
import numpy as np

data = {'Math': [58, 80, 90, 45, 60], 'English': [75, 65, 50, 80, 85]}
df = pd.DataFrame(data)

# 使用 where 方法进行条件筛选
df_passing = df.where(df >= 60)
print(df_passing)

输出:

   Math  English
0   NaN     75.0
1  80.0     65.0
2  90.0      NaN
3   NaN     80.0
4  60.0     85.0
示例 2:指定替换值

我们可以指定一个替换值,而不是默认的 NaN。例如,将不及格的成绩替换为 0。

df_passing = df.where(df >= 60, other=0)
print(df_passing)

输出:

   Math  English
0     0       75
1    80       65
2    90        0
3     0       80
4    60       85
示例 3:多重条件筛选

我们可以基于多个条件进行筛选。例如,将数学和英语成绩都及格的学生成绩保留,其余替换为 NaN。

df_passing = df.where((df['Math'] >= 60) & (df['English'] >= 60))
print(df_passing)

输出:

   Math  English
0   NaN     75.0
1  80.0     65.0
2   NaN      NaN
3   NaN      NaN
4  60.0     85.0
示例 4:在原 DataFrame 上进行操作

如果我们希望在原 DataFrame 上直接进行修改,可以使用 inplace=True。

df.where(df >= 60, other=0, inplace=True)
print(df)

输出:

   Math  English
0     0       75
1    80       65
2    90        0
3     0       80
4    60       85

总结

Pandas 的 where 方法是一个功能强大的工具,用于基于条件筛选和替换数据。它不仅可以帮助我们快速筛选满足特定条件的数据,还能灵活地处理不满足条件的数据。通过本文的介绍,希望你能在实际数据处理中更好地应用 where 方法,提高数据处理的效率和准确性。无论是进行简单的条件筛选还是复杂的多重条件处理,where 方法都能为你的数据分析工作提供极大的便利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值