Python 根据列的列表项中的值删除行
我希望根据一些特定的条件删除行,但似乎不知道如何做到这一点。我的数据帧Python 根据列的列表项中的值删除行,python,pandas,list,Python,Pandas,List,我希望根据一些特定的条件删除行,但似乎不知道如何做到这一点。我的数据帧groads看起来像: bridge tunnel x y 262732 F F [4.9703655, 4.9720589] [52.8451222, 52.8450346] 262733 F F [4.9739675, 4.9741636] [52.8442294, 52.8442168] 262734
groads
看起来像:
bridge tunnel x y
262732 F F [4.9703655, 4.9720589] [52.8451222, 52.8450346]
262733 F F [4.9739675, 4.9741636] [52.8442294, 52.8442168]
262734 F F [4.8682209, 4.8681081] [52.3388499, 52.3388448]
262735 F F [4.8681081, 4.8680897] [52.3388448, 52.338844]
262736 F F [4.8682725, 4.8682432, 4.8682209] [52.3388522, 52.3388509, 52.3388499]
您可以猜到这些是坐标,但是如果条目列表中的坐标高于或低于某些值,我想删除整行。如果我要将这些值保存在一个新列表中,我会使用
newlist=[coord\u list for coord\u list in groads['x']如果coord\u list[0]>5或coord\u list[0]<4.8]
本质上,这保留了我想要的值,但我也希望删除数据框中与此条件对应的行(或保留相关行)。有人知道怎么做吗?我们将不胜感激
干杯您可以通过
str[0]
索引选择列x
中的第一个列表,然后通过以下方式获取值:
#changed data sample for test
print (df)
bridge tunnel x \
262732 F F [5.9703655, 4.9720589]
262733 F F [3.9739675, 4.9741636]
262734 F F [4.8682209, 4.8681081]
262735 F F [4.8681081, 4.8680897]
262736 F F [4.8682725, 4.8682432, 4.8682209]
y
262732 [52.8451222, 52.8450346]
262733 [52.8442294, 52.8442168]
262734 [52.3388499, 52.3388448]
262735 [52.3388448, 52.338844]
262736 [52.3388522, 52.3388509, 52.3388499]
df1 = df[df['x'].str[0].between(4.8, 5, inclusive=False)]
print (df1)
bridge tunnel x \
262734 F F [4.8682209, 4.8681081]
262735 F F [4.8681081, 4.8680897]
262736 F F [4.8682725, 4.8682432, 4.8682209]
y
262734 [52.3388499, 52.3388448]
262735 [52.3388448, 52.338844]
262736 [52.3388522, 52.3388509, 52.3388499]