53

您所在的位置:网站首页 dataframe筛选满足条件的列 53

53

2023-11-11 16:18| 来源: 网络整理| 查看: 265

53_Pandas中的条件替换值(where, mask)

我会解释如何在pandas中根据条件赋值。虽然它不使用 if 语句,但它可以处理条件分支,如 if then … 或 if then … else …。

具体值的替换见后面的文章,替换或删除缺失值NaN。

24_Pandas.DataFrame,Series元素值的替换(replace)

以下面的 pandas.DataFrame 为例。

import pandas as pd import numpy as np df = pd.DataFrame({'A': [-20, -10, 0, 10, 20], 'B': [1, 2, 3, 4, 5], 'C': ['a', 'b', 'b', 'b', 'a']}) print(df) # A B C # 0 -20 1 a # 1 -10 2 b # 2 0 3 b # 3 10 4 b # 4 20 5 a

以下内容进行说明。

带有 loc、iloc 的布尔索引引用pandas.DataFrame, Series 的 where() 方法 False元素可以改变,True元素保持不变 pandas.DataFrame, Series 的 mask() 方法 True元素可以改变,False元素不变 NumPy where() 函数 True 和 False 元素都可以更改 带有 loc、iloc 的布尔索引引用

可以通过如下编写来根据条件替换标量值。

df.loc[df['A'] 'A': [-20, -10, 0, 10, 20], 'B': [1, 2, 3, 4, 5], 'C': ['a', 'b', 'b', 'b', 'a']}) print(df) # A B C # 0 -20 1 a # 1 -10 2 b # 2 0 3 b # 3 10 4 b # 4 20 5 a print(df['C'].mask(df['C'] == 'a')) # 0 NaN # 1 b # 2 b # 3 b # 4 NaN # Name: C, dtype: object print(df['C'].mask(df['C'] == 'a', 100)) # 0 100 # 1 b # 2 b # 3 b # 4 100 # Name: C, dtype: object df['D'] = df['A'].mask(df['C'] == 'a', df['B']) print(df) # A B C D # 0 -20 1 a 1 # 1 -10 2 b -10 # 2 0 3 b 0 # 3 10 4 b 10 # 4 20 5 a 5 df['D'].mask(df['D'] % 2 != 0, df['D'] * 10, inplace=True) print(df) # A B C D # 0 -20 1 a 10 # 1 -10 2 b -10 # 2 0 3 b 0 # 3 10 4 b 10 # 4 20 5 a 50

它似乎比 where() 更直观,因为第二个参数被分配给满足第一个参数条件(变为 True)的元素。 pandas.DataFrame 也有一个 mask() 方法。

print(df.mask(df


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3