python剔重函数 python剔除函数

python用drop_duplicates()函数保留数据集的重复行

前两天处理数据的时候,需要得到两个数据的交集数据,所以要去除数据中非重复部分,只保留数据中的重复部分。

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了乌翠免费建站欢迎大家使用!

   网上看了一下大家的教程,大部分都是教去除重复行,很少有说到仅保留重复行的。所以在这里用drop_duplicates这个去重函数来实现这个功能。

drop_duplicates函数介绍 :

data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)

#subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。

默认值为subset=None表示考虑所有列。

keep='first’表示保留第一次出现的重复行,是默认值。

keep另外两个取值为"last"和False,分别表示保留最后一次出现的重复行和去除所有重复行。

inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。

要用函数取得数据集data中的重复列,分三个步骤 :

(提前导入pandas模块)

data0_1 = data.drop_duplicates() #保留第一个重复行

data0_2 = data.drop_duplicates(keep=False) #去除所有重复行

data0_3=pd.concat([data0_1,data0_2]).drop_duplicates(keep=False)

#合并起来再去重,只剩下真的重复行。

举例:data中wangwu行和tony行重复,需要把它们两行取出。

第一步:#保留第一个重复行

第二步:#去除所有重复行

第三步:#合并起来再去重

通过以上步骤实现取出数据中的重复行。

Python实现对列表中重复元素进行去重的方法小结

1、运用新建字典的方式,去除重复的键

2、利用集合,直接将列表转化为集合,自动去重后转回列表。有一个问题,转换为集合的同时,数据无序了。

3、用列表的推导式

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。重复元素判定。编写一个函数,接受列表作为参数

代码如下:

def func1(num_list):

if len(num_list) != len(set(num_list)):

return True

else:

return False

if __name__ == '__main__':

num_list = [[1, 2, 3, 4], [6, 7, 8], [4, 5, 6, 6, 6]]

for one_list in num_list:

print(func1(one_list))

运行结果:

扩展资料

python对列表去重的几种方式:

1、直观方法,先建立一个新的空列表,通过遍历原来的列表,再利用逻辑关系not in 来去重。总结:这样可以做出来,但是过程不够简单。但是此方法保证了列表的顺序性。

2、利用set的自动去重功能,将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。

参考资料:python官网-Doc语法文档

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 数组去重的方法

如:arr =['a','d','e','a']

用: arr= sorted(set(arr), key=arr.index)

同: arr = list(set(arr))

arr.sort(key=arr.index)

⚠️直接set(arr)也可以去除重复元素,只是新数组的顺序就不是原来的顺序了。

如:arr=[{'text':wuyuan,'value':1},{'text':默认,'value':2},{'text':默认,'value':2},

{'text':wyy,'value':4}]

用: f = lambda x,y:x if y in x else x + [y]

arr = reduce(f, [[], ] + arr)

⚠️这里去除的字典里面的键值对必须是完全一样的。


当前名称:python剔重函数 python剔除函数
文章来源:http://cdiso.cn/article/hpccse.html

其他资讯