pandas:通过将两列数据框与元组列表进行比较来获取行

abr*_*bra 5 python pandas

假设我有一个包含四列的 Pandas DataFrame:A、B、C、D。

my_df = pd.DataFrame({'A': [0,1,4,9], 'B': [1,7,5,7],'C':[1,1,1,1],'D':[2,2,2,2]})
Run Code Online (Sandbox Code Playgroud)

我还有一个元组列表:

my_tuples = [(0,1),(4,5),(9,9)]
Run Code Online (Sandbox Code Playgroud)

我只想保留数据帧的行,其中 的值(my_df['A'],my_df['B'])等于 my_tuples 中的元组之一。

在此示例中,这将是 row#0 和 row#2。

有没有好的方法可以做到这一点?我很感激任何帮助。

jez*_*ael 6

DataFrame.mergeDataFrame由元组创建的一起使用,这里和这里on的所有列的默认 interecton 都没有参数:DataFramesAB

df = my_df.merge(pd.DataFrame(my_tuples, columns=['A','B']))
print (df)
   A  B  C  D
0  0  1  1  2
1  4  5  1  2
Run Code Online (Sandbox Code Playgroud)

或者:

df = my_df[my_df.set_index(['A','B']).index.isin(my_tuples)]
print (df)
   A  B  C  D
0  0  1  1  2
2  4  5  1  2
Run Code Online (Sandbox Code Playgroud)