熊猫合并会创建多余的重复条目

Nic*_*aro 5 python merge pandas

我是Pandas的新手,我想合并两个具有相似列的数据集。除了许多相同的值之外,各列与另一列相比将具有一些唯一的值。我想保留每列中的一些重复项。我想要的输出如下所示。添加how ='inner'或'outer'不会产生预期的结果。

import pandas as pd

dict1 = {'A':[2,2,3,4,5]}
dict2 = {'A':[2,2,3,4,5]}

df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)

print(pd.merge(df1,df2))

output:
   A
0  2
1  2
2  2
3  2
4  3
5  4
6  5

desired/expected output:
   A
0  2
1  2
2  3
3  4
4  5
Run Code Online (Sandbox Code Playgroud)

请让我知道如何/如果可以通过合并实现所需的输出,谢谢!

编辑 对此有很多评论。为了弄清楚为什么我对此行为感到困惑,如果仅添加另一列,它不会产生四个2,而只有两个2,所以我希望在我的第一个示例中它也会具有两个2。为什么行为似乎改变了,熊猫在做什么?

import pandas as pd
dict1 = {'A':[2,2,3,4,5],
         'B':['red','orange','yellow','green','blue'],
        }
dict2 = {'A':[2,2,3,4,5],
         'B':['red','orange','yellow','green','blue'],
        }

df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)

print(pd.merge(df1,df2))

output:
   A       B
0  2     red
1  2  orange
2  3  yellow
3  4   green
4  5    blue

However, based on the first example I would expect:
   A       B
0  2     red
1  2  orange
2  2     red
3  2  orange
4  3  yellow
5  4   green
6  5    blue
Run Code Online (Sandbox Code Playgroud)

Ren*_*ene 5

import pandas as pd

dict1 = {'A':[2,2,3,4,5]}
dict2 = {'A':[2,2,3,4,5]}

df1 = pd.DataFrame(dict1).reset_index()
df2 = pd.DataFrame(dict2).reset_index()

df = df1.merge(df2, on = 'A')
df = pd.DataFrame(df[df.index_x==df.index_y]['A'], columns=['A']).reset_index(drop=True)

print(df)
Run Code Online (Sandbox Code Playgroud)

输出:

   A
0  2
1  2
2  3
3  4
4  5
Run Code Online (Sandbox Code Playgroud)

  • 您能否对倒数第二行的作用添加一些评论? (19认同)