如何检查一列是否映射到特定值,反之亦然?

How to check if one column maps to specific value and vice verse?

我有一个包含以下列的数据框:

d = {'lot_no': [1, 2, 3, 4], 
     'part_no': [01345678, 01234567, 01123456, 10123456],
     'zip_code': [32835, 32835, 32808, 32835]}

df = pd.DataFrame(data=d)

首先,我想检查“zip_code”列中的所有 32835 个值是否与具有以下模式的“part_no”匹配,01xxxxxx,其中 X 是数字。然后,我要确保所有 01xxxxxx part_no 对应一个 32835 “zip_code”。 如果没有,我想 return 一个“lot_no”列表用于未通过检查的列表,或者如果整个数据帧通过则为 True。

在此示例中,输出应为 [3, 4]。

使用布尔掩码:

m1 = df['zip_code'].eq('32835')
m2 = df['part_no'].str.startswith('01')
lot_no = df.loc[~(m1 & m2), 'lot_no'].tolist()
print(lot_no)

# Output
[3, 4]