根据同一df中其他列的多个列值过滤df

时间:2020-09-25 04:44:19

标签: python python-3.x pandas pandas-groupby

我在下面有df:

id | status | id_reference
1    True        NaN
4    False       1
2    False       Nan
7    False       3
6    True        2
10   True        4

如何仅过滤或希望df中的行,其中:

状态列 True id_reference < / em>列值作为 id列 中的值存在于df的另一行中。

所以根据以上df,

我想要下面的行:

id | status | id_reference 
6    True        2
10   True        4 

实际df更大,因为这是一个样本

4 个答案:

答案 0 :(得分:3)

id_reference投射到float(如果尚未使用并使用isin

print (df.loc[df["status"]&df["id_reference"].astype(float).isin(df["id"])])

   id  status id_reference
4   6    True            2
5  10    True            4

答案 1 :(得分:2)

您可以尝试以下操作:

df.loc[df["status"] & df["id_ref"].isin(df["id"])]

答案 2 :(得分:0)

您可以尝试以下方法:

df = df.query('status == True & id_reference.notnull()')
print(df)

答案 3 :(得分:0)

def filterDataSet(self,dataSetValues):
    try :
        print(dataSetValues)  dataSetValues= dataSetValues.fillna(0)
        dataSetValues = dataSetValues[dataSetValues.id_reference>0]
        dataSetValues = dataSetValues[dataSetValues.status == True]
        return dataSetValues
    except ValueError as ve:
        print("Exception while filter data ", ve)