# ===========找出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)
df2 = df.drop_duplicates(subset=['address','preference_level'])
# =====求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)使用实例(以下都是虚拟数据)
当df1和df2是一种包含关系时,仅使用一次append即可
(4)求解思路:
将df2的内容追加到df1中,如果df1完全包含df2中的内容,则只使用一次append即可,如果df1不完全包括df2中的内容,则需要使用两次append,这是为了保证在在使用drop_duplivates时能够删除df2的全部内容。