如何将含缺失值的Pandas DataFrame按非缺失列组合动态拆分?
动态按非缺失列组合分组生成子DataFrame
步骤1:统一缺失值格式
先把DataFrame中的空白字符替换为Pandas标准缺失值pd.NA,确保缺失值能被系统识别:
import pandas as pd # 将所有空白(含全空格)替换为标准缺失值 v = v.replace(r'^\s*$', pd.NA, regex=True)
步骤2:生成分组标识
对每一行,生成非缺失列名的拼接字符串作为分组唯一标识,保证相同非缺失列组合的行会被归为一组:
# 每行非缺失列的掩码转成列名字符串作为分组键 group_key = v.notna().apply(lambda row: ','.join(row[row].index), axis=1)
步骤3:分组生成子DataFrame
用生成的分组键对原DataFrame分组,将结果存入字典,键是非缺失列组合字符串,值是对应子DataFrame:
# 动态分组,得到所有非缺失列组合对应的子DataFrame sub_dfs = {comb: df for comb, df in v.groupby(group_key)}
使用示例
比如要获取只有x5列非缺失的子DataFrame,直接调用:
x5_only_df = sub_dfs["x5"]
内容的提问来源于stack exchange,提问作者anarchy
相关产品推荐
相关产品推荐

