如何从 python 中删除没有值的重复项

How to remove duplicates from python without values

我有一个重复的列表。

我想删除没有值的重复行 'sh'。

下面的示例适用于小列表,但如果列表很大,则此路径无法正确删除。

还有其他方法可以执行卸载吗?

import pandas as pd
union_list = [
 ['10','robot_1','sh']
,['10','robot_1',' ']
,['11','robot_2','sh']
,['11','robot_2','']
,['12','robot_3','']
]

el = list(union_list)
df = pd.DataFrame(el)
df1 = df.drop_duplicates(0)
print(df1)

我想要得到的结果

    0        1   2
0  10  robot_1  sh
2  11  robot_2  sh
4  12  robot_3 

如果你有空字符串和 'sh' 并且想保留 sh 以防重复,你可以按所有列排序,这会将空字符串移到顶部,然后 drop_duplicates 保留最后一个值:

df.sort_values(by=[0,1,2]).drop_duplicates(0, keep='last')

或者,始终优先考虑“sh”:

df.sort_values(by=2, key=lambda x: x=='sh').drop_duplicates(0, keep='last')

输出:

    0        1   2
0  10  robot_1  sh
2  11  robot_2  sh
4  12  robot_3