多条件选择数据帧中的行

2024-04-18 02:07:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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

Tags: 数据zcabsdf1printx1xcy1
1条回答
网友
1楼 · 发布于 2024-04-18 02:07:24

您可以压缩bot列表并在列表理解中筛选DataFrame^{}的列表,还可以根据需要更改具有ij值差异的序列的绝对值:

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

dfs = [(bf[(bf['XC']-i) <= 12.5 & ((bf['YC'] - j) <= 12.5)]) for i, j in zip(x, y)]
#if necessary absolute values of difference Series
#dfs = [(bf[((bf['XC']-i).abs()<=12.5)&((bf['YC']-j).abs()<=12.5)]) for i, j in zip(x, y)]

df = pd.concat(dfs, ignore_index=True)
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

相关问题 更多 >