如何在两个数据框的列之间找到匹配值?

时间:2020-09-13 16:51:26

标签: python pandas dataframe

我有两个DataFrame,分别名为ChildParentChild就像元数据表一样,我需要验证Parent数据帧的数据。

孩子:

Cust_id     Description   Detail
1           Good          Regular
34          Excellent     Normal
45          Bulk          Buyer

父母:

Name    Cust_id order   date    Payment
xyz     1       ice     01-02-2019  online
abc     45      bread   01-02-2019  offline
mno     56      Butter  01-02-2019  offline
pqr     67      cookies 01-02-2019  online
rst     34      Rice    01-02-2019  online
ert     1       egg     01-02-2019  online

我需要验证Cust_id数据框中是否存在Parent吗?

我正在使用“ distinct”在Cust_id表的所有记录Parent上进行选择,并使用循环来检查{{1}中是否存在Parent表中的所有数据}}表。

如何使用熊猫方法无需迭代即可完成?

1 个答案:

答案 0 :(得分:0)

child.Cust_id.unique()
  • pandas.DataFrame.merge也可以以多种方式使用。
  • 以下解决方案将'Cust_id'import pandas as pd child = pd.DataFrame({'Cust_id': [1, 34, 45], 'Description': ['Good', 'Excellent', 'Bulk'], 'Detail': ['Regular', 'Normal', 'Buyer']}) parent = pd.DataFrame({'Name': ['xyz', 'abc', 'mno', 'pqr', 'rst', 'ert'], 'Cust_id': [1, 45, 56, 67, 34, 1], 'order': ['ice', 'bread', 'Butter', 'cookies', 'Rice', 'egg'], 'date': ['01-02-2019', '01-02-2019', '01-02-2019', '01-02-2019', '01-02-2019', '01-02-2019'], 'Payment': ['online', 'offline', 'offline', 'online', 'online', 'online']}) # mask using isin mask = parent.Cust_id.isin(child.Cust_id.unique()) # return only the data from parent, where parent Cust_id isin child Cust_id parent[mask] # add a column to the parent dataframe parent['in_child'] = mask # display(parent) Name Cust_id order date Payment in_child 0 xyz 1 ice 01-02-2019 online True 1 abc 45 bread 01-02-2019 offline True 2 mno 56 Butter 01-02-2019 offline False 3 pqr 67 cookies 01-02-2019 online False 4 rst 34 Rice 01-02-2019 online True 5 ert 1 egg 01-02-2019 online True 合并
    • 'outer'列指示indicator=True所在的数据帧。
      • '_merge''Cust_id'数据框。
  • 'left_only'合并了两个数据帧中的信息,我不确定这是否是所需的输出。
parent