如何检查Pandas Dataframe是否正确-Python
如何检查数据帧中的每一行,以查看该行是否为真?如果df['check']为真,我想在这里打印'Yes'如何检查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'
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)哪些行是真的?