我有两个DataFrame,分别名为Child
和Parent
。 Child
就像元数据表一样,我需要验证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
表中的所有数据}}表。
如何使用熊猫方法无需迭代即可完成?
答案 0 :(得分:0)
'Cust_id'
的{{1}}是否在parent
的{{1}}中。'Cust_id'
列表中使用.isin
。
'child'
在'Cust_id'
中创建所有唯一值的数组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