如果在熊猫中与iloc一起使用

时间:2018-08-21 08:10:35

标签: python pandas

是否可以使用有条件的,如果将DataFrame的值提取为iloc呢?
像这样:

if dta.iloc[[1],[5]] == "Example":
    print("Ok")

2 个答案:

答案 0 :(得分:0)

我认为您很亲密,需要删除标量的嵌套[]

dta.iloc[1,5]

示例

dta = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')})

print (dta)
   A  B  C  D  E  F
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b

print (dta.iloc[1,5])
a

if dta.iloc[1,5]=="a":
    print("Ok")

Ok

但是如果iloc返回Series,则添加Series.any以检查是否存在至少一个True

print (dta.iloc[1:4,5])
1    a
2    a
3    b
Name: F, dtype: object

print (dta.iloc[1:4,5] == 'a')
1     True
2     True
3    False
Name: F, dtype: bool

print ((dta.iloc[1:4,5] == 'a').any())
True

对于DataFrame最简单的情况是使用numpy.any检查True中的至少一个2d array

print (dta.iloc[1:4,4:6])
   E  F
1  3  a
2  6  a
3  9  b

print (dta.iloc[1:4,4:6] == 'a')
       E      F
1  False   True
2  False   True
3  False  False

print ((dta.iloc[1:4,4:6] == 'a').values.any())
True

答案 1 :(得分:0)

我认为您可以使用

在您的示例中:

if dta.iloc[[1],[5]].values=="Example": print("Ok")