如何从 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
我有一个重复的列表。
我想删除没有值的重复行 '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