根据已验证条件创建布尔值列

问题描述 投票:0回答:1

您好,我想根据条件创建一个布尔列。我创建了词典,其中“地区”作为键,而“邮政编码”作为值。在我的数据集中提取了客户的邮政编码的两位第一位。我想检查我的客户是否具有与该地区相同的邮政编码。这两种方法都不能给我带来很好的效果。我将所有值都取到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。我应该如何使其运作。

python search
1个回答
0
投票

[抱歉,如果我理解的问题不对,但是如果您想检查字典中是否存在特定值,则可以使用方法.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()}")
© www.soinside.com 2019 - 2024. All rights reserved.