如何检查 Pandas Dataframe 的真假 - Python

How to check Pandas Dataframe for True or False - Python

如何检查数据框中的每个 pandas 行以查看该行是 True 还是 False?这里我想打印,'Yes' if df['check'] is True.

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

甚至assign它回到一列

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