我在下面有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更大,因为这是一个样本
答案 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)