合并 DataFrame 时丢失的条目数

Agu*_*nte 2 python dataframe pandas

在一个练习中,我被要求用内连接合并 3 个 DataFrame(df1+df2+df3 = mergedDf),然后在另一个问题中,我被要求告诉我在执行这个 3 路合并时丢失了多少条目。

#DataFrame1
df1 = pd.DataFrame(columns=["Goals","Medals"],data=[[5,2],[1,0],[3,1]])
df1.index = ['Argentina','Angola','Bolivia']
print(df1)
            Goals    Medals
Argentina       5         2
Angola          1         0
Bolivia         3         1

#DataFrame2
df2 = pd.DataFrame(columns=["Dates","Medals"],data=[[1,0],[2,1],[2,2])
df2.index = ['Venezuela','Africa']
print(df2)
            Dates    Medals
Venezuela       1         0
Africa          2         1
Argentina       2         2

#DataFrame3
df3 = pd.DataFrame(columns=["Players","Goals"],data=[[11,5],[11,1],[10,0]])
df3.index = ['Argentina','Australia','Belgica']
print(df3)
           Players    Goals
Argentina       11        5
Australia       11        1
Spain           10        0

#mergedDf
mergedDf = pd.merge(df1,df2,how='inner',left_index=True, right_index=True)
mergedDf = pd.merge(mergedDf,df3,how='inner',left_index=True, right_index=True)
print(mergedDF)
           Goals_X  Medals_X  Dates  Medals_Y  Players  Goals_Y
Argentina        5         2      2         2       11        2

#Calculate number of lost entries by code
Run Code Online (Sandbox Code Playgroud)

我尝试用外连接合并所有内容,然后减去 mergedDf,但我不知道该怎么做,有人可以帮助我吗? 在此输入图像描述

Agu*_*nte 5

I've found a simple but effective solution:

Merging the 3 DataFrames, inner and outer:

df1 = Df1()
df2 = Df2()
df3 = Df3()
inner = pd.merge(pd.merge(df1,df2,on='<Common column>',how='inner'),df3,on='<Common column>',how='inner')
outer = pd.merge(pd.merge(df1,df2,on='<Common column>',how='outer'),df3,on='<Common column>',how='outer')
Run Code Online (Sandbox Code Playgroud)

Now, the number of missed entries (rows) is:

return (len(outer)-len(inner))
Run Code Online (Sandbox Code Playgroud)