在一个练习中,我被要求用内部联接(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
可以在merge中将True传递给
indicator
那么使用}时能保持
^{pr2}$value_counts
你就知道你在做inner
时损失了多少,因为只有both
在{对于具有两个合并列的3df和filter,单词是
both
我找到了一个简单但有效的解决方案:
合并3个数据帧,内部和外部:
现在,丢失的条目(行)的数量是:
^{pr2}$具有外部联接和参数指示符的解决方案,最后计数两个指示符列}中没有
a
和{both
的行数,方法是True
值的和(类似1
s的进程):另一种解决方案是使用与
^{pr2}$mergedDf.index
不匹配的每个索引的内部联接和sum
过滤值:如果每个索引中的值唯一,则另一种解决方案:
相关问题 更多 >
编程相关推荐