您好,我想根据条件创建一个布尔列。我创建了词典,其中“地区”作为键,而“邮政编码”作为值。在我的数据集中提取了客户的邮政编码的两位第一位。我想检查我的客户是否具有与该地区相同的邮政编码。这两种方法都不能给我带来很好的效果。我将所有值都取到False
。
data_pct = pd.read_csv('../data_out/data.csv', sep=';', encoding='ISO-8859-1')
data_pct = data_pct.reset_index(drop=True)
data_pct['top_posclt'] = ''
dic_codeclub = {
'R1': '33',
'R2': '34',
'R3': '19',
'R4': '56',
'R5': '47',
'R6': '31',
'R7': '06',
}
data_pct['basePOSCLT'] = ''
for i in range(0, data_pct.shape[0]):
data_pct['basePOSCLT'][i] = str(data_pct['POSCLT'][i])[0:2]
data_pct['basePOSCLT'] = data_pct.basePOSCLT.fillna(0) # for customer with no Adress
第一种方法:
data_pct['top_posclt1'] = data_pct['basePOSCLT'].apply(lambda x: True if x in list(dic_codeclub.values()) else False)
第二方法:
for i in data_pct['basePOSCLT']:
for j in list(dic_codeclub.values()):
data_pct['top_posclt2'] = 'True' if i == j else 'False'
data_pct['top_poscltX']
仅具有False
。我应该如何使其运作。
[抱歉,如果我理解的问题不对,但是如果您想检查字典中是否存在特定值,则可以使用方法.keys()
和.values()
,然后像这样进行is in
比较:'R2' in test_dict.keys()
和'99' in test_dict.values()
分别
test_dict = {
'R1': '33',
'R2': '34',
'R3': '19',
'R4': '56',
'R5': '47',
'R6': '31',
'R7': '06',
}
print(f"Key 'R2' is in dict: {'R2' in test_dict.keys()}")
print(f"Key 'ABC' is in dict: {'ABC' in test_dict.keys()}")
print("")
print(f"Value '33' is in dict: {'33' in test_dict.values()}")
print(f"Value '99' is in dict: {'99' in test_dict.values()}")