pandas的isin函数对异常值所在行的处理
- 首先导入库和读取文件
- 筛选出异常值所在行
- 单列筛选
- 多列筛选(同时满足用&连接,或的话用 | 连接)
- 删除异常值所在行
首先导入库和读取文件
import pandas as pd
df = pd.read_csv('german_clean.csv',header=0)
筛选出异常值所在行
单列筛选
# df[df[列名].isin([异常值])]
# df[列名].isin([异常值])对当前列中存在异常值的行会返回True,不存在的返回False
# 假设checking_status列中异常值为A11
df[df['checking_status'].isin(['A11'])]
异常值可以是多个,如
df[df['checking_status'].isin(['A11','A12'])]
多列筛选(同时满足用&连接,或的话用 | 连接)
- 筛选出每列都有异常值的行
# df[df[列名].isin([异常值])& df[列名].isin([异常值])]
df[df['checking_status'].isin(['A11','A12'])&df['purpose'].isin(['A43'])]
- 筛选出至少有一列有异常值的行
# df[df[列名].isin([异常值])| df[列名].isin([异常值])]
df[df['checking_status'].isin(['A11','A12'])|df['purpose'].isin(['A43'])]
删除异常值所在行
因为isin()返还的是boolean的DataFrame,在里面的是True,不在里面的是False,所以我们只需要对它进行异或取反即可。
# df[True^df[列名].isin([异常值])]
df[True^df['checking_status'].isin(['A11'])]
同理,多行删除只需要套个括号将其视为整体再取反即可
df[True^(df['checking_status'].isin(['A11','A12'])|df['purpose'].isin(['A43']))]
df[True^(df['checking_status'].isin(['A11','A12'])&df['purpose'].isin(['A43']))]