扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
利用集合的不重复属性,可以先转换至集合,再用list()函数转换回来即可。
我们拥有10年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供成都网站制作、成都做网站、外贸营销网站建设、微信开发、成都小程序开发、成都做手机网站、H5开发、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。
比如,a是一个列表,a=list(set(a)),即可完成列表去重。
case1:用集合的特性set(),去重后顺序会改变
case1.1:可以通过列表中索引(index)的方法保证去重后的顺序不变
case2:使用循环查找的方式,不改变顺序
case3:通过删除索引
case4:itertools.groupby
case5:fromkeys
case6:reduce方法
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)
这是一个字符串的全角和半角的问题,可以导入 unicodedata 中的 normalize 函数先把全角转换为半角,然后再用 set 对列表去重,参考代码如下:
from unicodedata import normalize
list3=['热菜','凉菜','凉菜','硬菜']
set(map(lambda s: normalize('NFKC', s), list3))
输出:
{'硬菜', '热菜', '凉菜'}
扩展:
“ NFKC”代表“Normalization Form KC [Compatibility Decomposition, followed by Canonical Composition]”,并将全角字符替换为半角字符,这些半角字符与Unicode等价。
前两天处理数据的时候,需要得到两个数据的交集数据,所以要去除数据中非重复部分,只保留数据中的重复部分。
网上看了一下大家的教程,大部分都是教去除重复行,很少有说到仅保留重复行的。所以在这里用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行重复,需要把它们两行取出。
第一步:#保留第一个重复行
第二步:#去除所有重复行
第三步:#合并起来再去重
通过以上步骤实现取出数据中的重复行。
利用set()函数,可以将列表去重,如:
s = [1, 3, 3, 5, 7, 7, 8, 9]
set(s) #输出为{1, 3, 5, 7, 8, 9}
list(set(s)) #输出 [1, 3, 5, 7, 8, 9]
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流