Python 如何在具有多个数据帧的pandas中使用merge来查找唯一的元素
我正在使用三个数据帧:Python 如何在具有多个数据帧的pandas中使用merge来查找唯一的元素,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我正在使用三个数据帧:df_1、df_2和df_3 它们具有不同的行数和列数以及不同的信息。每个数据帧都按国家名称编制索引,因此这就是它们之间的联系 这样做的目的是找到三者的交集,并确定在进行交集时丢失了多少独特元素 我首先从创建这些df的函数调用它们: df_1、df_2、df_3=加载数据() merged_1=pd.merge(df_1,df_2,how='internal',left_index=True,right_index=True) merged_2=pd.merge(merge
df_1
、df_2
和df_3
它们具有不同的行数和列数以及不同的信息。每个数据帧都按国家名称编制索引,因此这就是它们之间的联系
这样做的目的是找到三者的交集,并确定在进行交集时丢失了多少独特元素
我首先从创建这些df的函数调用它们:
df_1、df_2、df_3=加载数据()
merged_1=pd.merge(df_1,df_2,how='internal',left_index=True,right_index=True)
merged_2=pd.merge(merged_1,df_3,how='internal',left_index=True,right_index=True)
unique_df_1=pd.merge(df_1,merged_2,how='left',left_index=True,right_index=True,
指示符=True)。查询(“”“合并==”仅左“)
unique_df_2=pd.merge(df_2,merged_2,how='left',left_index=True,right_index=True,
指示符=True)。查询(“”“合并==”仅左“)
unique_df_3=pd.merge(df_3,merged_2,how='left',left_index=True,right_index=True,
指示符=True)。查询(“”“合并==”仅左“)
返回(len(唯一的)+len(唯一的)+len(唯一的)+len(唯一的)+len(唯一的)+len(唯一的)+len(唯一的)+len
这是我关于堆栈溢出的第一篇文章,所以我希望我所做的一切都是正确的。如果我没有或我的文字不清楚,我会道歉
df1 = pd.DataFrame({'z1':range(6), 'z2':[5,3,6,9,2,4]}, index=list('abcdef'))
df2 = pd.DataFrame({'x1':range(4), 'x2':[10,20,30, 40]}, index=list('abhi'))
df3 = pd.DataFrame({'y1':range(5), 'y2':[11,22,33, 44, 55]}, index=list('abktf'))
print(df1)
z1 z2
a 0 5
b 1 3
c 2 6
d 3 9
e 4 2
f 5 4
print(df2)
x1 x2
a 0 10
b 1 20
h 2 30
i 3 40
print(df3)
y1 y2
a 0 11
b 1 22
k 2 33
t 3 44
f 4 55
df4 = pd.merge(df1, df2, left_index=True, right_index=True)
df5 = pd.merge(df4, df3, left_index=True, right_index=True)
print(df5)
z1 z2 x1 x2 y1 y2
a 0 5 0 10 0 11
b 1 3 1 20 1 22
您是否正在尝试查找唯一/缺失的国家/地区?您可以用一种更简单的方法来完成:
set_1 = set(df1.index)
set_2 = set(df2.index)
set_3 = set(df3.index)
print(set_1)
print(set_2)
print(set_3)
>> {'d', 'b', 'e', 'a', 'f', 'c'}
>> {'a', 'i', 'b', 'h'}
>> {'b', 't', 'f', 'a', 'k'}
可以通过以下方式获得所有三个集合之间的交点:
set_4 = set_1.intersection(set_2).intersection(set_3)
print(set_4)
>> {'a', 'b'}
df1中的失踪国家:
print(set_1.difference(set_4))
>> {'d', 'f', 'c', 'e'}
如果这不是你要找的,请告诉我。或者,如果您正在尝试比较任何特定的数据点。欢迎这样做,您在那里有大量的文本,不幸的是,您缺少一个请提供一个,至少应该有示例输入(复制粘贴)和预期输出。嘿,Andreas,谢谢!好的,嘿,萨科姆。谢谢你的回答!这肯定很有帮助,谢谢你解释我写的东西。不幸的是,你的解决方案给了我与我尝试的方法相同的答案!我想知道的是,除了这张图片中的紫色部分外,如何获取所有内容:我找到了答案。excel文件中的一些数据有上标数字,所以当我删除这些数据时,所有数据都正确相加。谢谢你的帮助!