如何检查Pandas Dataframe是否正确-Python

如何检查Pandas Dataframe是否正确-Python,python,pandas,numpy,ambiguous,Python,Pandas,Numpy,Ambiguous,如何检查数据帧中的每一行,以查看该行是否为真?如果df['check']为真,我想在这里打印'Yes' import pandas as pd import numpy as np num = [10,20,30,40,30,20,30,40,50,60,70,80,90] ind = [0,1,2,3,4,5,6,7,8,9,10,11,12] df = pd.DataFrame({'Price': num}, index = ind) df['check'] = (df['Price'

如何检查数据帧中的每一行,以查看该行是否为真?如果df['check']为真,我想在这里打印'Yes'

import pandas as pd
import numpy as np

num = [10,20,30,40,30,20,30,40,50,60,70,80,90]
ind = [0,1,2,3,4,5,6,7,8,9,10,11,12]

df = pd.DataFrame({'Price': num}, index = ind)

df['check'] = (df['Price'] > 30)

if df['check'] == True:
  print('Yes')

不知道你为什么要这么做。。。但是使用
itertuples

for row in df.itertuples():
    if row.check:
        print('Yes')

Yes
Yes
Yes
Yes
Yes
Yes
Yes

您可以使用
map

df.check.map({True: 'Yes', False: ''})

0        
1        
2        
3     Yes
4        
5        
6        
7     Yes
8     Yes
9     Yes
10    Yes
11    Yes
12    Yes
Name: check, dtype: object
甚至
将它分配回一列

df.assign(mapped=df.check.map({True: 'Yes', False: ''}))

    Price  check mapped
0      10  False       
1      20  False       
2      30  False       
3      40   True    Yes
4      30  False       
5      20  False       
6      30  False       
7      40   True    Yes
8      50   True    Yes
9      60   True    Yes
10     70   True    Yes
11     80   True    Yes
12     90   True    Yes

您可以使用
pd.DataFrame.where
,它在第一个参数的计算结果为
True
时保留值,在
False
时填充第二个参数。如果未传递第二个参数,则将放置
np.nan

df.Price.where(df.check, -99)

0    -99
1    -99
2    -99
3     40
4    -99
5    -99
6    -99
7     40
8     50
9     60
10    70
11    80
12    90
Name: Price, dtype: int64

姐妹方法是
mask
,其作用正好相反。保持第一个参数为
False
的位置。这是一个等价的说法

df.Price.mask(~df.check, -99)

0    -99
1    -99
2    -99
3     40
4    -99
5    -99
6    -99
7     40
8     50
9     60
10    70
11    80
12    90
Name: Price, dtype: int64

谢谢,我只是想更好地了解熊猫是如何工作的。我在玩弄对熊猫使用状态逻辑的想法。我将设置一个数字==1,而不是打印。np.where(df['check']>30,1,-1)的问题是我想保持我的数字为1,直到另一个事件发生。np.where会在语句错误时立即将其设置回-1。@BillyRay我给了你更多的例子供你玩。@BillyRay如果回答了你的问题,请不要忘记接受答案。很抱歉没有这么快回答。我凌晨2点发帖,感觉睡着了。谢谢你的回复!出于好奇:你想知道(a)是否有任何一行是真的,(b)有多少行是真的,或者(c)哪些行是真的?