python数据处理问题集锦
python数据处理小问题
pandas求差集
此方法我用来解决大量数据多次to_sql时的主键重复
DataFrame的差集并没有直接的库内置方法,如果现在要求a对b的差集,这里采用的是两次扩充a再去重的办法实现,考虑到a可能比较大,故我先去取ab交集再俩次扩充交集后去重,但是b中本身就含有重复值的话,此方法就不适用了
1、交集(求同)
intersected=pd.merge(df1,df2,how='inner')
延伸(针对指定列求交集)intersected=pd.merge(df1,df2,on['name'],how='inner')
2、差集(df1-df2为例)
diff=pd.concat([df1,df2,df2]).drop_duplicates(keep=False)
-
concat()将 Series 与 DataFrame 对象组合在一起,pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False)
叁数名称 说明 objs 一个序列或者是Series、DataFrame对象。 axis 表示在那个轴方向上(行或者列)进行连接操作,默认xs=0表示行方向。 join 指定连接方式,取值为"inner","outer'",默认为outer表示取并集,inner代表取交集。 ignore_index 布尔值参数,默认为False,如果为True,表示不在连接的轴上使用索引。 join_axes 表示索引对象的列表。 -
drop_duplicates()去重
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
参数 说明 subset 用来指定特定的列,默认是所有列 keep 指定处理重复值的方法:first,last,False first 保留第一次出现的值 last 保留最后一次出现的值 False 删除所有重复值,留下没有出现过重复的 inplace 是直接在原来数据上修改还是保留一个副本True(原来),False(副本) 案例:
duplicate_content=pd.merge(content_id, news_content, on='id',how='inner') diff=pd.concat([duplicate_content,duplicate_content,news_content]).drop_duplicates(subset=['id'],keep=False)
本文来自博客园,作者:KMP,转载请注明原文链接:https://www.cnblogs.com/touchTomorrow/p/16401281.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步