去重函数python 去重函数 excel

python中对list去重的多种方法

python中对list去重的多种方法

三江侗网站建设公司成都创新互联公司,三江侗网站设计制作,有大型网站制作公司丰富经验。已为三江侗成百上千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的三江侗做网站的公司定做!

今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。

问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。

直观方法

最简单的思路就是:

这样也可行,但是看起来不够爽。

用set

另外一个解决方案就是用set:

代码如下:

ids = [1,4,3,3,4,2,3,4,5,6,1]

ids = list(set(ids))

这样的结果是没有保持原来的顺序。

按照索引再次排序

最后通过这种方式解决:

代码如下:

ids = [1,4,3,3,4,2,3,4,5,6,1]

news_ids = list(set(ids))

news_ids.sort(ids.index)

使用itertools.grouby

文章一开始就提到itertools.grouby, 如果不考虑列表顺序的话可用这个:

代码如下:

ids = [1,4,3,3,4,2,3,4,5,6,1]

ids.sort()

it = itertools.groupby(ids)

for k, g in it:

print k

关于itertools.groupby的原理可以看这里:

网友补充:用reduce

网友reatlk留言给了另外的解决方案。我补充并解释到这里:

代码如下:

In [5]: ids = [1,4,3,3,4,2,3,4,5,6,1]

In [6]: func = lambda x,y:x if y in x else x + [y]

In [7]: reduce(func, [[], ] + ids)

Out[7]: [1, 4, 3, 2, 5, 6]

上面是我在ipython中运行的代码,其中的 lambda x,y:x if y in x else x + [y] 等价于 lambda x,y: y in x and x or x+[y] 。

Python常用的几种去重方法

case1:用集合的特性set(),去重后顺序会改变

case1.1:可以通过列表中索引(index)的方法保证去重后的顺序不变

case2:使用循环查找的方式,不改变顺序

case3:通过删除索引

case4:itertools.groupby

case5:fromkeys

case6:reduce方法

Python 去重,统计,lambda函数

df.drop_duplicates('item_name')

方法一:

df.drop_duplicates('item_name').count()

方法二:

df['item_name'].nunique()

结果:50

附:nunique()和unique()的区别:

unique()是以 数组形式(numpy.ndarray)返回列的所有唯一值(特征的所有唯一值)

nunique()即返回的是唯一值的个数

比如:df['item_name'].unique()

要求:将下表中经验列将按周统计的转换为经验不限,保留学历

df1['经验'] = df1['经验'].apply(lambda x: '经验不限'+ x[-2:] if '周' in x else x)

#解释:将‘5天/周6个月’变成‘经验不限’,然后保留学历‘本科’

方法二:定义函数

def dataInterval(ss):

if '周' in ss:

    return '经验不限'+ ss[-2:]

return ss

df1['经验'] = df1['经验'].apply(dataInterval)


网站名称:去重函数python 去重函数 excel
地址分享:http://myzitong.com/article/hpcejh.html