我正在尝试根据用户的选择获取电话号码
#the dict that contains the data I need
x={"contact":
{
"facility_message": "testing testing testing",
"facilitydigits":101,
"name": "",
"urn": "tel:+1234567891011",
"uuid": "60409852-a2089-43d5-bd4c-4b89a6191793",
"selection_anc_pnc":"C"
}
}
#extracting data from the dict
facility_number=str(x['contact']['facilitydigits'])
group=(x['contact']['selection_anc_pnc']).upper()
facility_message=(x['contact']['facility_message'])
#checking user selection
if group =='A':
group="MIMBA"
elif group =='B':
group='MAMA'
elif group=='C':
group='MAMA' and "MIMBA"
我的df看起来像这样
phone group County PNC/ANC Facility Name Optedout Facility Code
25470000040 MIMBA Orange PNC Centre FALSE 101
25470000030 MAMA Orange PNC Centre FALSE 101
25470000010 MIMBA Orange PNC Centre FALSE 101
25470000020 MAMA Orange PNC Centre FALSE 101
25470000050 MAMA Orange PNC Main Centre FALSE 112
从我的df中提取电话号码
phone_numbers =merged_df.loc[(merged_df['Facility Code'] ==facility_number) & (merged_df['group'] == group) & (merged_df['Opted out'] == optout)]['phone']
print(phone_numbers)
由于if语句而正在发生什么
[25470000010,25470000040]
所需的输出
[25470000040,25470000030,25470000010,25470000020]
答案 0 :(得分:2)
您使用group = 'MAMA' and "MIMBA"
错误地分配了组值,该值在执行后将值"MIMBA"
分配给了最后一个真实值的组,相反,您要做的是分配值列表组可以使用group = ['MAMA', "MIMBA"]
。然后,您可以使用Series.isin
方法来过滤数据帧中属于group
变量中存在的组的组。
使用:
if group =='A':
group=["MIMBA"]
elif group =='B':
group=['MAMA']
elif group=='C':
group=['MAMA', "MIMBA"]
m = (
merged_df['Facility Code'].astype(str).eq(facility_number)
& merged_df['group'].isin(group)
& merged_df['Optedout'].eq(optout)
)
phone_numbers = merged_df.loc[m, "phone"]
print(phone_numbers.values)
此打印:
[25470000040 25470000030 25470000010 25470000020] # assuming variable optout is False