如何用Pandas .loc保留指定列并筛选386816行数据?
Pandas筛选与列保留操作方案
场景1:筛选指定列(IDC_DC_CD_1)值为386816的行,同时保留目标三列
直接用loc方法一步完成列选择与行筛选,逻辑更清晰:
# 假设你的数据集存储在名为df的DataFrame中 filtered_data = df.loc[df['IDC_DC_CD_1'] == 386816, ['PERSON_WGHT', 'LOS', 'IDC_DC_CD_1']]
也可以拆分步骤写,方便理解:
# 先保留需要的三列 selected_cols = df[['PERSON_WGHT', 'LOS', 'IDC_DC_CD_1']] # 再筛选出IDC_DC_CD_1等于386816的行 filtered_data = selected_cols[selected_cols['IDC_DC_CD_1'] == 386816]
场景2:筛选目标三列中任意一列值为386816的行
如果需要保留的三列里只要有一列值是386816就留下该行,用any()方法实现多条件或判断:
cols_to_keep = ['PERSON_WGHT', 'LOS', 'IDC_DC_CD_1'] # 检查目标列中是否有等于386816的值,只要有一列满足就保留该行 filtered_data = df[cols_to_keep][df[cols_to_keep].eq(386816).any(axis=1)]
关键注意点
- 确认386816的类型和列中数据类型匹配:如果列里是字符串格式,要写成
'386816' - 若数据存在缺失值,可先通过
df.dropna(subset=cols_to_keep)清理,避免筛选逻辑出错
内容的提问来源于stack exchange,提问作者Black-Cat
相关产品推荐
相关产品推荐

