如果数据框中的多个列具有特定值,则打印

时间:2019-04-06 20:17:59

标签: python pandas dataframe

每两列都有特定值时,我要打印“购买”和“太贵”。

我尝试了for,while,where循环...

df= pd.DataFrame({
'car' : ['BMW','BMW','VW','BMW','VW','VW'],
'price' : [10,5,10,5,5,10]
})
df.head()


 df=
    car price
 0  BMW   10
 1  BMW    5
 2  VW    10
 3  BMW    5
 4  VW     5
 5  VW    10 

我总共只想打印3张,这就是为什么我使用while循环的原因。计数变量增加,并且在某个时候它将停止:

count=0
while 3-count>0:
    for index, row in df.iterrows():
        if ( (df[['car']]=='BMW') & (df[['price']]==5)  ):
            print('hello')
            count +=1
        elif ( (df[['car']]=='VW') & (df[['price']]==10)  ):
            print('too expensive')
            count +=1

这是我的错误消息:

ValueError:DataFrame的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

1 个答案:

答案 0 :(得分:1)

您需要使用iterrows返回的标量值而不是df.filters。

如果仅打印插入项,则会得到以下信息:

for index, row in df.iterrows():
    print('car', row[0], 'price', row[1])

car BMW price 10
car BMW price 5
car VW price 10
car BMW price 5
car VW price 5
car VW price 10

使用此方法,我们可以在下面找到您的解决方案。

count=0
while 3-count>0:
    for index, row in df.iterrows():
        if ( (row[0]=='BMW') & (row[1]==5)  ):
            print('buy')
            count +=1
        elif ( (row[0]=='VW') & (row[1]==10)  ):
            print('too expensive')
            count +=1

buy
too expensive
buy
too expensive