迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Pandas DataFrame DataFrame.where() 函数

作者:迹忆客 最近更新:2024/04/22 浏览次数:

Python Pandas DataFrame.where() 函数接受一个条件作为参数,并产生相应的结果。它对 DataFrame 的每个值进行条件检查,并选择接受条件的值。它的功能类似于 if-else 语句。不接受条件的值会被默认的 NaN 值代替。


pandas.DataFrame.where() 的语法

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

参数

这个函数有几个参数。以上是所有参数的默认值。

cond 它是一个布尔值 SeriesDataFrame,一个数组样的结构或一个可调用的结构。它代表了对 DataFrame 的每个值进行检查的条件/条件。如果条件是 True,那么原始值不会被替换。否则,就会被一个 NaN 值替换。
other 它是一个标量,Series/DataFrame,或一个可调用的函数。它表示如果条件为 False,将为原始值放置的值。
inplace 它是一个布尔值。它告诉我们对数据的操作。如果为 True,它将自己进行修改。
axis 它是一个整数值。它告诉工作轴的行或列。
level 它是一个整数值。它说明了级别。
errors 它是一个字符串。它讲述了错误的情况。它接受两个选项:raiseignore。如果它的值是 raise,那么它允许提出异常。如果它的值是 ignore,那么它将忽略异常,如果有错误,则返回原始对象。
try_cast 它是一个布尔值。如果可能,它将函数的输出转换为原始输入类型。

返回值

它根据条件返回改变后的 DataFrame


示例代码:DataFrame.where()

我们将在下一个代码示例中通过实现这个函数来进一步了解它。

import pandas as pd

dataframe=pd.DataFrame({
                        'A': 
                            {0: 60, 
                            1: 100, 
                            2: 80,
                            3: 78,
                            4: 95,
                            5: 45,
                            6: 67,
                            7: 12,
                            8: 23,
                            9: 50},
                        'B': 
                            {0: 90, 
                            1: 75, 
                            2: 82, 
                            3: 64, 
                            4: 45,
                            5: 35,
                            6: 74,
                            7: 52,
                            8: 93,
                            9: 18}
                        })

print(dataframe)

示例 DataFrame 就是。

     A   B
0   60  90
1  100  75
2   80  82
3   78  64
4   95  45
5   45  35
6   67  74
7   12  52
8   23  93
9   50  18

该函数有一个必选参数,即 cond

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95, 5: 45, 6: 67, 7: 12, 8: 23, 9: 50},
        "B": {0: 90, 1: 75, 2: 82, 3: 64, 4: 45, 5: 35, 6: 74, 7: 52, 8: 93, 9: 18},
    }
)

dataframe1 = dataframe.where(dataframe > 50)
print(dataframe1)

输出:

       A     B
0   60.0  90.0
1  100.0  75.0
2   80.0  82.0
3   78.0  64.0
4   95.0   NaN
5    NaN   NaN
6   67.0  74.0
7    NaN  52.0
8    NaN  93.0
9    NaN   NaN

不大于 50 的值,即不满足条件的值将被一个 NaN 值代替。


示例代码:DataFrame.where() 指定一个值

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95, 5: 45, 6: 67, 7: 12, 8: 23, 9: 50},
        "B": {0: 90, 1: 75, 2: 82, 3: 64, 4: 45, 5: 35, 6: 74, 7: 52, 8: 93, 9: 18},
    }
)

dataframe1 = dataframe.where(dataframe > 50, other=0)
print(dataframe1)

输出:

     A   B
0   60  90
1  100  75
2   80  82
3   78  64
4   95   0
5    0   0
6   67  74
7    0  52
8    0  93
9    0   0

在这里,不符合条件的值被用户定义的值代替。


示例代码:DataFrame.where() 使用多个条件

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95, 5: 45, 6: 67, 7: 12, 8: 23, 9: 50},
        "B": {0: 90, 1: 75, 2: 82, 3: 64, 4: 45, 5: 35, 6: 74, 7: 52, 8: 93, 9: 18},
    }
)

dataframe1 = dataframe.where((dataframe == 80) | (dataframe < 50), other=0)
print(dataframe1)

输出:

    A   B
0   0   0
1   0   0
2  80   0
3   0   0
4   0  45
5  45  35
6   0   0
7  12   0
8  23   0
9   0  18

返回的 DataFrame 包含符合这两个条件的值。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

DataFrame 获取给定列的第一行

发布时间:2024/04/22 浏览次数:51 分类:Python

本教程介绍了如何在 Pandas DataFrame 中使用 Series.loc()和 Series.iloc()方法获取给定列的第一行。

Pandas 重命名多个列

发布时间:2024/04/22 浏览次数:186 分类:Python

本教程演示了如何使用 Pandas 重命名数据框中的多个列。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便