python dataframe去重_python DataFrame找出相同行,去重,求差集

#   ===========找出DataFrame之间的相同行========

(1)问题描述:

在两个DataFrame之间,想要找出相同的行。(类似于求集合之间的交集)

(2)执行命令:

import pandas as pd

same_df = pd.merge(df1, df2, on = ['col1', 'col2', 'col3'], how = 'inner')

(3)使用实例(以下数据都是模拟数据,非真实数据):

df1 =

weather       add                time

1      台风  重庆市江北区  2018-11-20 00:14:59

2      大雾  重庆市南岸区  2018-11-20 00:44:41

3      暴雨  重庆市渝中区  2018-11-20 11:18:47

df2 =

weather       add                time

2      大雾  重庆市南岸区  2018-11-20 00:44:41

3      暴雨  重庆市渝中区  2018-11-20 11:18:47

4               重庆市忠县      2018-11-20 21:56:51

same_df_1 = pd.merge(df1, df2)

same_df_1

weather    add                time

0      大雾  重庆市南岸区  2018-11-20 00:44:41

1      暴雨  重庆市渝中区  2018-11-20 11:18:47

same_df_2 = pd.merge(df1, df2, on = ['weather',  'add',  'time'], how = 'inner')

weather    add                time

0      大雾  重庆市南岸区  2018-11-20 00:44:41

1      暴雨  重庆市渝中区  2018-11-20 11:18:47

#  ========DataFrame内行去重=========

(1)问题描述:

如果DataFrame之间存在相同的行,想要去除里面的重复行

(2)执行命令:

import pandas as pd

df.drop_duplicates(subset = ['col1', 'col2'])

(3)使用实例(以下都是虚拟数据):

import pandas as pd

data1 = {

"address":['北京','天津','山西','广东','重庆','天津','山西'],

"preference_level": ['4','3.5','3','3.5','4.5','3.5','3']

}

df = pd.DataFrame(data1)

c22fdee5a299

df2 = df.drop_duplicates(subset=['address','preference_level'])

c22fdee5a299

# =====求DataFrame之间的差集=====

(1)问题描述:

第一种情况,当两个dataframe之间存在交集,且是包含与被包含之间的关系时;第二种情是两者不是包含关系,但是确实存在交集。当然第一种情况的使用方法也适用于第二种。在这两种情况下,如何从df1中删除df1与df2之间相同的元素,仅保留df1中独有的元素??

(2)使用命令:

针对第一种情况

import pandas as pd

df1.append(df2)

df1.append(df2)

df1 = df1.drop_duplicates(subset=['col1', 'col2'], keep=False)

针对第二种情况

df1.append(df2)

df1 = df1.drop_duplicates(subset=['col1', 'col2'], keep=False)

(3)使用实例(以下都是虚拟数据)

c22fdee5a299

c22fdee5a299

c22fdee5a299

c22fdee5a299

当df1和df2是一种包含关系时,仅使用一次append即可

c22fdee5a299

c22fdee5a299

(4)求解思路:

将df2的内容追加到df1中,如果df1完全包含df2中的内容,则只使用一次append即可,如果df1不完全包括df2中的内容,则需要使用两次append,这是为了保证在在使用drop_duplivates时能够删除df2的全部内容。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值