【问题标题】:How do I merge two datasets based on the common key in pandas? [duplicate]如何根据 pandas 中的公共键合并两个数据集? [复制]
【发布时间】:2017-03-12 23:16:17
【问题描述】:

我有两个包含域名的数据集:

df1:

varA     domains            
123     www.google.com   
456     www.ebay.com     
789     www.amazon.com   
101     www.nbc.com      
....

df2:

 urls            varB
www.cnn.com      xsd
www.ebay.com     wer
www.nbc.com      xyz
www.amazon.com   zyx
....

我需要使用 df1 中的 varA 值填充 df2 中的 urls 值,以匹配域/url,因此输出将如下所示:

 urls            varA   varB
www.ebay.com     456    wer
www.nbc.com      101    xyz
www.amazon.com   789    zyx
....

应删除 df2 中与 df1 中没有匹配域的所有域。

我有这个代码:

target_cols = ['domains', 'urls', 'varB', 'varA']
df2.merge(df1[target_cols], on='urls', how='inner')

代码正在生成错误。

我该如何解决?任何可以工作的替代解决方案?

【问题讨论】:

  • 链接的重复目标中的部分回答了这个特定的问题,在“避免输出中的重复键列”部分下。

标签: python pandas foreign-keys merging-data


【解决方案1】:

错误是因为您要合并的键名不同 这将起作用

pd.merge(df1, df2, left_on = 'domains', right_on = 'urls', how = 'inner').drop('domains', axis = 1)


    varA    urls            varB
0   456     www.ebay.com    wer
1   789     www.amazon.com  zyx
2   101     www.nbc.com     xyz

【讨论】:

  • 部分工作,varB 没有被转移
  • 你得到的输出和我打印的不一样吗?
  • 只有 varA 和 urls,varB 不在输出中
  • 合并将合并所有列,只要它们在原始df中。我不知道 varB 发生了什么。您能否再次打印 df1 和 df2 并检查。我非常有信心这段代码可以工作
  • 你是对的,我很抱歉 - 试图打印拼写错误的变量。它正在工作!
猜你喜欢
  • 2017-09-03
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
相关资源
最近更新 更多