Python 数据帧中的For循环和if语句
我试图在满足某些条件时获取行值 这是密码Python 数据帧中的For循环和if语句,python,pandas,dataframe,for-loop,if-statement,Python,Pandas,Dataframe,For Loop,If Statement,我试图在满足某些条件时获取行值 这是密码 response='108' group="MAMA" optout='False' for row in merged_df: if row==response & row==group & row==optout: print(merged_df['phone']) 我的数据框看起来是这样的 phone group County PNC/ANC Facility Name
response='108'
group="MAMA"
optout='False'
for row in merged_df:
if row==response & row==group & row==optout:
print(merged_df['phone'])
我的数据框看起来是这样的
phone group County PNC/ANC Facility Name Optedout Facility Code
25470000000 MAMA Orange PNC Main Centre FALSE 112
25470000000 MAMA Orange PNC Main Centre FALSE 112
25470000010 MAMA Orange PNC Centre FALSE 108
25470000020 MAMA Orange PNC Centre FALSE 108
25470000000 MAMA Orange PNC Main Centre FALSE 112
这就是我得到的错误
read_masterFacility()
File "readsheet.py", line 48, in read_masterFacility
if row==response & row==group & row==optout:
TypeError: unsupported operand type(s) for &: 'int' and 'str'
期望输出
25470000010
25470000020
我如何才能做得更好???您需要以下几点:
if ((row["Facility Code"]==response and row["group"]==group) and row["optedout"]=optout):
这是因为您正在检查每一列的行中的值。您需要指定要检查的列。“&”也是Python中的按位and
此外,我认为您需要打印出第[“phone”]行。发生错误是因为
&
是按位比较。第二个问题是,如果merged_-df
是一个数据帧,那么对于merged_-df中的行,只会迭代它的列名。你应该这样做:
编辑的代码:
phones=merged_-df.loc[(merged_-df['Facility code']==response)&(merged_-df['group']==group)&(merged_-df['Optedout']==optout)]['phone']值
打印(电话)
我得到这个错误TypeError:字符串索引必须是整数
行的类型是什么:数据帧合并了吗?您可以使用type(merged_df)检查merged_df是一个数据帧…所有列的数据类型都是object关于未获得输出-它应该是最后一行中的print(row['phone'])吗?我只是想在我的df中打印所有电话号码,如果所有条件都是真的,请尽量避免原生python for循环。。。当你使用Pandas或numpy的内置函数时,你会得到更快的代码。另外,请发布数据而不是图片,使用预期输出(也是数据)我没有得到任何错误,但我也没有得到任何输出optout='FALSE'
,而不是'FALSE
,因为在数据框中它是FALSE
,我这样做了,但仍然,无输出和无错误所需输出25470000010 25470000020
返回一个空列表[]
您确定设备代码是整数而不是字符串吗?