如何检查Pandas Dataframe的真或假 - Python

时间:2017-04-08 06:04:16

标签: python pandas numpy ambiguous

如何检查数据框中的每个pandas行以查看该行是True还是False?在这里,我想打印,是的'如果df [' check']为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')

1 个答案:

答案 0 :(得分:3)

不确定您为什么要这样做...但请使用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