除了第一次出现之外,如何删除列表中所有特定值的出现?
例如.我有一个清单:
letters = ['a', 'b', 'c', 'c', 'c', 'd', 'c', 'a', 'a', 'c']
preserve_first(letters, 'c')
并返回:
['a', 'b', 'c', 'd', 'a', 'a']
删除除第一次出现的给定值之外的所有内容,否则保留顺序.如果有办法用pandas.Series做更好的事情.
解决方法:
您只想删除重复的’c’.因此,您希望过滤系列根本不重复的位置,或者它不等于’c’.我喜欢使用pd.Series.ne代替pd.Series!=因为包装括号的减少增加了可读性(我的观点).
s = pd.Series(letters)
s[s.ne('c') | ~s.duplicated()]
0 a
1 b
2 c
5 d
7 a
8 a
dtype: object
完全按照要求去做.
def preserve_first(letters, letter):
s = pd.Series(letters)
return s[s.ne(letter) | ~s.duplicated()].tolist()
preserve_first(letters, 'c')
['a', 'b', 'c', 'd', 'a', 'a']