检查逻辑下游是否存在索引整数时,如何在IF语句中使用索引整数?

时间:2019-11-21 04:24:39

标签: python python-3.x pandas

很抱歉,标题令人困惑。

我有一个数据框,我想检查索引中是否存在2个整数。如果存在这些数字中的任何一个,我只想使用这两个索引值来比较另一列col1,以查看该列值对于这两个整数值中的任何一个是否为空。

如果列为空,则返回索引的整数,以供以后使用。

我坚持在IF语句之后写下一部分。

如果这些子句中的任何一个为TRUE,我该如何使用满足该逻辑进一步条件的整数?

if 19 in session_final.index or 49 in session_final.index:
       **Not sure what to do to retrieve the integer that fulfilled this criteria**

2 个答案:

答案 0 :(得分:2)

我建议使用:

df[df.index.isin([19, 49]) & df['col1'].notna()]

如果需要返回索引的整数:

df.index[df.index.isin([19, 49]) & df['col1'].notna()]

示例

df = pd.DataFrame({
         'col1':[np.nan,3,5,7,1,0],
}, index=[19,49,4,5,6,7])
print (df)
    col1
19   NaN
49   3.0
4    5.0
5    7.0
6    1.0
7    0.0

a = df.index[df.index.isin([19, 49]) & df['col1'].notna()]
print (a)
Int64Index([49], dtype='int64')

答案 1 :(得分:1)

如果我正确理解了您的问题

df[~df[df.index.isin((19, 49))]['col1'].isnull()]

将为您提供一个索引为(19,49)且col1不为空的数据框。

然后,您可以检查数据框是否为空,然后检查值。