写入 excel 时如何在 groupby 之后删除数据框中的空值

How to drop null values in dataframe after groupby while writing to excel

我有以下 dfe:-

  ID CATEG   LEVEL     COLS    VALUE COMMENTS
    1   A        2     Apple    428  comment1
    1   A        3     Apple    175  comment1
    1   C        1     Apple    226  comment1
    1   C        2     Apple    884  comment1
    1   C        3     Apple    289  comment1
    1   B        1     Apple    712  comment1
    1   B        2     Apple    849  comment1
    2   B        3     Apple    376  comment1
    2   C        None  Orange   591  comment1
    2   B        None  Orange   135  comment1
    2   D        None  Orange   423  comment1
    2   A        None  Orange   866  comment1
    2            None  Orange   496  comment2

我想 pivotdfe 的一列 COLS 分组 ID 并写入 excel 这样每个 ID数据在一个 sheet 上。 我尝试了什么:-

df=pd.pivot_table(dfe,index=['ID','CATEG','LEVEL'],columns=['COLS'],values=['VALUE'])
    

with pd.ExcelWriter('file.xlsx',options={'nan_inf_to_errors': True}) as writer :
        df.groupby('ID').apply(lambda x: x.to_excel(writer,sheet_name=str(x.name),na_rep=0,index=True))
writer.save()

我面临的问题是在 groupby 许多列为 0 之后,我想删除在 groupby 之后和写入 excel 之前为空的列.我无法在 groupby 之前删除空列,因为那时整个列都不会为空

您可以通过 DataFrame.dropna 通过 how='all'axis=1 参数删除所有仅包含缺失值的列:

with pd.ExcelWriter('file.xlsx',options={'nan_inf_to_errors': True}) as writer :
        df.groupby('ID').apply(lambda x: x.dropna(how='all', axis=1).to_excel(writer,sheet_name=str(x.name),na_rep=0,index=True))
writer.save()