使用针对两列的比较在pandas DataFrame中选择行

时间:2016-01-24 19:51:22

标签: python pandas

我有一个pandas数据帧:

df = pd.DataFrame({'one' : [1, 2, 3, 4] ,'two' : [5, 6, 7, 8]})
   one  two
0    1    5
1    2    6
2    3    7
3    4    8

列“一”和列“二”一起构成(x,y)坐标

假设我有一个坐标列表:c = [(1,5), (2,6), (20,5)]

是否有一种优雅的方式来获取df中的行 匹配坐标?在这种情况下,给定c,匹配的行将为0和1

相关问题:Using pandas to select rows using two different columns from dataframe?

并且:Selecting rows from pandas DataFrame using two columns

2 个答案:

答案 0 :(得分:1)

使用pd.merge的这种接近应该比迭代解决方案更好。

import pandas as pd

df = pd.DataFrame({"one" : [1, 2, 3, 4] ,"two" : [5, 6, 7, 8]})
c = [(1, 5), (2, 6), (20, 5)]
df2 = pd.DataFrame(c, columns=["one", "two"])

pd.merge(df, df2, on=["one", "two"], how="inner")
   one  two
0    1    5
1    2    6

答案 1 :(得分:0)

您可以使用

>>> set.union(*(set(df.index[(df.one == i) & (df.two == j)]) for i, j in c))
{0, 1}