如何筛选仅在含x的Date索引行有值的DataFrame列?
筛选目标列的实现步骤
- 先把DataFrame拆分为x后缀索引行和y后缀索引行两个子集:
# 提取所有索引以x结尾的行 df_x = df[df.index.str.endswith('x')] # 提取所有索引以y结尾的行 df_y = df[df.index.str.endswith('y')] - 筛选符合要求的列:
- 找出y后缀行中所有行均为NaN的列:
y_all_nan = df_y.isna().all() - 同时确保x后缀行中至少存在一个有效值(排除全NaN的无效列):
x_has_valid = df_x.notna().any() - 合并两个条件,得到目标列的布尔掩码:
target_cols = y_all_nan & x_has_valid - 提取最终的筛选结果:
filtered_df = df.loc[:, target_cols] - 找出y后缀行中所有行均为NaN的列:
注:如果你的索引是日期格式拼接的后缀(比如经
pd.to_datetime处理后带后缀),需要先把索引转为字符串再判断后缀,示例:df.index.astype(str).str.endswith('x')
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

