根据另一个数据框中的值删除数据框中的行

时间:2020-06-05 04:05:41

标签: python pandas

我的数据框序列有2704行,列名“ index”下有不同的客户ID。 类似地,另一个数据框测试在列名“ index”下有8157行,具有不同的客户ID。我只想将客户ID保留在火车数据集中的测试数据框中。如何根据训练数据集中的客户ID值删除测试数据集中的行?

test dataset

train dataset

2 个答案:

答案 0 :(得分:2)

您可以使用否定isin来过滤掉id中的train_X

test = test[~test['index'].isin(train_X['index'])]

要消除训练中的值,我们只需交换testtrain。也就是说,请执行以下操作:

train_X = train_X[~train_X['index'].isin(test['index'])]

答案 1 :(得分:0)

@Sannia, 您可以通过使用pd.merge或对数据框进行过滤来实现,如下所示。

   import pandas as pd

   # Approach - 1 
   df_new = pd.merge(df1, df2[["index"]], on="index")  # assuming df1 and df2 are your data frames 

   # Approach - 2
   index_vals = df2["index"].tolist()    
   df1_new = df1[df1["index"].isin(index_vals)]