Python 去重,统计,lambda函数

Python018

Python 去重,统计,lambda函数,第1张

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)

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

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

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

case3:通过删除索引

case4:itertools.groupby

case5:fromkeys

case6:reduce方法

如: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)

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