.merge之后数据消失-Python

时间:2019-02-11 15:58:44

标签: python pandas dataframe merge

合并两个数据框后,观察结果消失了。

我有两个看起来像这样的数据框:

df_1 
       text      user
bla bla bla     user1
ga ga ga ga     user1
bur bur bur     user2
     .            .
df_2
       user       url
      user1   asd.com
      user2   dsa.com
     .            .  

我使用第一个用户的唯一列表来通过Web抓取他们的数据并构建第二个。我想将它们合并成这样:

df_merged
       text      user       url
bla bla bla     user1   asd.com
ga ga ga ga     user1   asd.com
bur bur bur     user2   dsa.com
     .            .        .

我通过以下方式合并它们:

df_merged = df_1.merge(df_2, on = 'user', validate = "m:m")

问题在于合并后的观测值随机消失,例如:

len(df_1['user'].drop_duplicates())

返回11115

len(df_2['user'])

返回11115

len(df_merged['user'].drop_duplicates())

返回7076

df_1包含约70k观测值,而df_merged包含约30k观测值

有人知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

请考虑使用“ outer”,“ left”或“ right”参数来修改联接以保留两个数据框中的所有联接。如果有帮助,这类似于SQL连接命令。

例如,如果您将代码修改为以下内容:

df_merged = df_1.merge(df_2, how='outer',on = 'user', validate = "m:m")

返回答案时,您可能会发现对于某些合并操作,该行中将有相应的空白值。

应该对这些进行询问,以确定如何最好地处理您的数据。 要使用空白值查找这些行,可以查看stackoverflow中的以下帖子:How to select rows with nan in particular column

有关可以传递的其他参数的更多信息,请查看此处Merge documentation