如何检查数据框中的每个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')
答案 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