我有一个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?
答案 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}