写入 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
我想 pivot
按 dfe
的一列 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()
我有以下 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
我想 pivot
按 dfe
的一列 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()