pandas的drop_duplicates无法去重问题
2024-01-09 08:46:52
之前没研究过pandas的去重方法,今天用了一下,发现这个方法并不是那么好用,我的需求是去除所有列的重复值,并保留第一个重复的值,按我的想法应该是下面这样写
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'a':[1,1,float('nan'),1,4,5],
'b':[3,3,4,4,5,6],
'c':[4,4,5,5,6,7],
})
df1 = df1.drop_duplicates(keep='first')
df1
但是结果却不尽如人意,
a b c
0 1.0 3 4
2 NaN 4 5
3 1.0 4 5
4 4.0 5 6
5 5.0 6 7
如图所示,并没有删除重复值,所以我只能一个一个列的删,删完在重新拼接在一起,
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'a':[1,1,float('nan'),1,4,5],
'b':[3,3,4,4,5,6],
'c':[4,4,5,5,6,7],
})
cols = df1.columns.to_list()
series_list = []
for col in cols:
tmp_s = df1[col].drop_duplicates(keep='first')
tmp_s = tmp_s.dropna()
tmp_s = tmp_s.reset_index(drop=True)
print(tmp_s)
series_list.append(tmp_s)
new_df = pd.concat(series_list,axis=1)
new_df
结果
a b c
0 1.0 3 4
1 4.0 4 5
2 5.0 5 6
3 NaN 6 7
当然这样数据的索引是无法跟之前的对应起来了,所以我猜pandas是想保留之前的数据的对应关系的,一旦有操作要破坏这种对应,它就不会执行
文章来源:https://blog.csdn.net/zy1620454507/article/details/135378165
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!