Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在具有多个数据帧的pandas中使用merge来查找唯一的元素_Python_Pandas_Dataframe_Merge - Fatal编程技术网

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文件中的一些数据有上标数字,所以当我删除这些数据时,所有数据都正确相加。谢谢你的帮助!