如何检查一列是否映射到特定值,反之亦然?
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]
我有一个包含以下列的数据框:
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]