多个条件-在pandas数据框中选择行

时间:2019-08-28 05:49:19

标签: python python-3.x pandas dataframe

我的x和y坐标为:

x = (16764.83, 16752.74, 16743.1)
y = (107347.67, 107360.32, 107362.96)

基本上就像三点(x1, y1), (x2, y2) and (x3, y3)

在数据框中:

print (bf)
     XMORIG    YMORIG  ZMORIG        XC         YC      ZC
0  14212.37  104364.2    1300  16774.83  107357.67  2852.5
1  14212.37  104364.2    1300  17499.87  105601.70  2867.5
2  14212.37  104364.2    1300  17474.87  105601.70  2867.5
3  14212.37  104364.2    1300  17499.87  105626.70  2852.5
4  14212.37  104364.2    1300  17499.87  105626.70  2867.5
5  14212.37  104364.2    1300  17499.87  105676.70  2867.5
6  14212.37  104364.2    1300  17524.87  105701.70  2867.5
7  14212.37  104364.2    1300  16762.74  107370.32  2882.5
8  14212.37  104364.2    1300  16753.10  107372.96  2897.5

我只想从XC和YC列中选择一组坐标的x和y小于数据框同一行的12.5的那些行。

我尝试过:

c = (x3,y3)

for i in c:
    df1 = (bf.loc[(bf['XC']-i <= abs(12.5))] & (bf['YC'] - i <= abs(12.5)))

print(df1)

但没有得到想要的结果。

所需的结果将是:

print (df)
     XMORIG    YMORIG  ZMORIG        XC         YC      ZC
0  14212.37  104364.2    1300  16774.83  107357.67  2852.5
1  14212.37  104364.2    1300  16762.74  107370.32  2882.5
2  14212.37  104364.2    1300  16753.10  107372.96  2897.5

1 个答案:

答案 0 :(得分:2)

您可以压缩漫游器列表并过滤列表中的DataFrame,然后concat,然后将i和{{1}的差值更改为Series的绝对值}值(如有必要):

j