python如何做数据清洗?
发布时间:2026-01-19 21:38:03

1.数据清洗代码:
importpandasaspd
importnumpyasnp
#创建空df,保存测试数据
test_df=pd.DataFrame({'K1':['C1','C1','C2','C3','C4','C2','C1'],'K2':['A','A','B','C','D',np.NaN,np.NaN]})
#按K1列分组,组内unique操作(去除重复元素,返回元组或列表)
test_df_unique=pd.DataFrame(test_df.groupby(['K1'])['K2'].agg('unique'))
#自定义函数判断元组中是否含有nan
defhas_nan(list):
flag=False
forxinlist:
ifxisnp.NaN:
flag=True
break
returnflag
#自定义函数判断元组是否包含nan
defno_nan(list):
flag=True
forxinlist:
ifxisnp.NaN:
flag=False
break
returnflag
#获取包含nan数据的k2列数据
test_df_unique_has_nan=test_df_unique[test_df_unique['K2'].apply(has_nan)]
#获取不含nan的k2列数据
test_df_unique_no_nan=test_df_unique[test_df_unique['K2'].apply(no_nan)]
#管理测试数据,获取源数据
test_df_get=test_df[test_df['K1'].isin(test_df_unique_has_nan.index.tolist())]
test_df_alone=test_df[test_df['K1'].isin(test_df_unique_no_nan.index.tolist())]
#删除含nan的重复数据
test_df_get_nonan=test_df_get[~test_df_get['K2'].isna()]
#组合数据
result=test_df_get_nonan.append(test_df_alone)
#去重,得到最终结果
result_save=result.drop_duplicates(subset=['K1','K2'],keep='last')
#结果落地
result_save.to_excel('C:/Users/zhen/Desktop/数据清洗去重.xlsx')2、测试数据:

3、结果:

下一篇 python入门经典好吗?
