📅  最后修改于: 2023-12-03 15:03:28.252000             🧑  作者: Mango
Pandas DataFrame.where() 方法在处理数据时非常有用,可以根据指定的条件对数据进行筛选或替换操作。
Pandas DataFrame.where() 方法的语法如下:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)
参数说明:
使用 Pandas DataFrame.where() 方法有很多场景。以下是几种常见的用法:
此示例演示如何使用 DataFrame.where() 方法来填充 NaN 值。
import pandas as pd
import numpy as np
data = {
'Name': ['Alex', 'Brian', 'Cathy', 'David', 'Edward'],
'Age': [20, 68, np.nan, 45, np.nan],
'Salary': [np.nan, 25000, 30000, np.nan, 50000]
}
df = pd.DataFrame(data)
fill_value = {
'Age': df.Age.mean(),
'Salary': df.Salary.median()
}
df_filled = df.where(pd.notna(df), fill_value)
print(df_filled)
输出结果:
Name Age Salary
0 Alex 20.00 32500.0
1 Brian 68.00 25000.0
2 Cathy 45.25 30000.0
3 David 45.00 32500.0
4 Edward 45.25 50000.0
此示例演示如何使用 DataFrame.where() 方法根据条件替换值。
import pandas as pd
data = {
'Name': ['Alex', 'Brian', 'Cathy', 'David', 'Edward'],
'Age': [20, 68, 32, 45, 50],
'Salary': [25000, 30000, 40000, 50000, 60000]
}
df = pd.DataFrame(data)
df['Salary'] = df.Salary.where(df.Age > 40, df.Salary * 1.1)
print(df)
输出结果:
Name Age Salary
0 Alex 20 25000.0
1 Brian 68 30000.0
2 Cathy 32 44000.0
3 David 45 50000.0
4 Edward 50 66000.0
以上示例中,salary 值如果在年龄小于 40 岁的人身上,则乘一个 1.1 系数。