基于指定列筛选DataFrame及T1_diff/T2_diff字段过滤需求问询
Pandas DataFrame 列筛选与条件过滤解决方案
我来帮你一步步搞定这两个操作,用 Pandas 实现起来很简单:
步骤1:保留指定列
首先,我们只保留你需要的 WEEK、DIM1、DIM2、T1_diff、T2_diff 这几列。直接通过列名列表索引即可:
# 保留目标列 filtered_cols_df = df[['WEEK', 'DIM1', 'DIM2', 'T1_diff', 'T2_diff']]
这样就得到了只包含所需列的新 DataFrame。
步骤2:基于 T1_diff 或 T2_diff 过滤行
接下来是条件过滤,你提到要对 T1_diff 或 T2_diff 进行筛选,这里我给几个常见的示例(你可以根据实际需求调整条件):
示例1:筛选 T1_diff 或 T2_diff 不为0的行
# 过滤出任意一个diff字段不为0的行 final_df = filtered_cols_df[(filtered_cols_df['T1_diff'] != 0) | (filtered_cols_df['T2_diff'] != 0)]
示例2:筛选 T1_diff > 50 或 T2_diff > 10 的行
# 根据阈值过滤 final_df = filtered_cols_df[(filtered_cols_df['T1_diff'] > 50) | (filtered_cols_df['T2_diff'] > 10)]
示例3:筛选 T1_diff 为空或 T2_diff 为空的行(针对缺失值场景)
final_df = filtered_cols_df[(filtered_cols_df['T1_diff'].isna()) | (filtered_cols_df['T2_diff'].isna())]
注意:Pandas 里用
|表示逻辑"或",每个条件都需要用括号括起来,避免运算优先级问题。
合并两步操作(可选)
如果你想一步完成列选择和行过滤,可以用可读性更强的 loc 方法:
final_df = df.loc[(df['T1_diff'] != 0) | (df['T2_diff'] != 0), ['WEEK', 'DIM1', 'DIM2', 'T1_diff', 'T2_diff']]
loc 先指定行筛选条件,再指定要保留的列,逻辑清晰,推荐优先使用这种写法。
内容的提问来源于stack exchange,提问作者Dark Shadows
相关产品推荐
相关产品推荐

