【问题标题】:Compare 2 df's df1and df2比较 2 df 的 df1 和 df2
【发布时间】:2020-12-15 14:24:18
【问题描述】:

比较 2 df 的 df1 有 1000 多行重复的 unique_id,但 df2 只有唯一的 unique_id's.each 和 df1 中的每一行我想与 df2 进行比较,以便 df2 中存在 unique_id 如果匹配比较相同的类别和子类别从 df1 到 df2。 输出:如果其中任何一个不匹配,则应该将该索引放入数组中。

import pandas as pd
import numpy as np

data1 = {'unique_id': 
        ['Computer','iPhone','Printer','Desktop','Computer','iPhone','iphpne','Printer','Desktop','Computer','iPhone','Printer','Desktop'],
        'category': 
         ['movies','documentary','series','special','movies','documentary','series','special','series','special','movies','series','special'],
         'subcategory':
         ['drama','horror','comedy','reality','drama','documentary','comedy','reality','documentary','comedy','documentary','comedy','drama']
        }

df1 = pd.DataFrame(data1,columns= ['unique_id', 'category','subcategory'])


data2 = {'unique_id': ['Computer','iPhone','Printer','Desktop'],
         'category': ['movies','documentary','series','special'],
         'subcategory':['drama','horror','comedy','reality']
        }

df2 = pd.DataFrame(data2,columns= ['unique_id', 'category','subcategory'])

【问题讨论】:

  • 是什么阻止您使用unique id 加入数据框?
  • 请给出您预期的输出。问题陈述和期望不是很清楚。
  • 我尝试使用 df2 循环遍历 df1 中的每一行,但出现错误。因为 df1 有 1200 行,但 df2 只有 20 行
  • 我的意思是 df2 仅具有唯一值,但 df1 具有 1 个 unique_id 多行具有不同类别和子类别字段。需要检查 df1 每一行的值是否与 df2 匹配。如果不匹配则拾取索引。

标签: python pandas dataframe


【解决方案1】:

IIUC,这就是你需要的。

pd.concat([df1,df2]).drop_duplicates(keep=False)

打印:

   unique_id     category  subcategory
5     iPhone  documentary  documentary
6     iphpne       series       comedy
7    Printer      special      reality
8    Desktop       series  documentary
9   Computer      special       comedy
10    iPhone       movies  documentary
12   Desktop      special        drama

获取索引

pd.concat([df1,df2]).drop_duplicates(keep=False).index

打印:

   Int64Index([5, 6, 7, 8, 9, 10, 12], dtype='int64')

【讨论】:

  • @pushpa 你需要这个吗?
猜你喜欢
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多