每两列都有特定值时,我要打印“购买”和“太贵”。
我尝试了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()。
答案 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