如何遍历行并删除列匹配的所有其他行?

问题描述 投票:0回答:2

我正在尝试在数据框中逐行删除所有具有相同“ hole_ID”但保留原始行的行。这样,最近的邻居只能在不同的孔中搜索。这是我到目前为止的内容:

import pandas as pd
s1 = StringIO(u'''east,north,elev,hole_ID
11,11,5,A
51,51,6,A
61,61,11,A
21,21,2,B
31,31,3,B
71,71,3,B
81,81,4,B''')

df2 = pd.read_csv(s1)

for idx,row in df2.iterrows():
    dftype= df2.drop_duplicates(subset=['hole_ID'], keep='first')

这就是我得到的:

Out[20]: 
   east  north  elev hole_ID
0    11     11     5       A
3    21     21     2       B

这就是我想要得到的:

Out[18]: 
   east  north  elev hole_ID
0    11     11     5       A
3    21     21     2       B
4    31     31     3       B
5    71     71     3       B
6    81     81     4       B

因此,对于第1行,所有其他具有相同Hole_ID('A')的行都将被删除。

提前感谢。

python pandas
2个回答
1
投票

如果只想在hole_IDA的地方删除重复项,则可以在一侧将pd.concat索引为正确的数据帧并删除重复项,而在其他情况下可以pd.concat([ df2[df2.hole_ID.eq('A')].drop_duplicates(subset=['hole_ID'], keep='first'), df2[df2.hole_ID.ne('A')]], axis=0) east north elev hole_ID 0 11 11 5 A 3 21 21 2 B 4 31 31 3 B 5 71 71 3 B 6 81 81 4 B

Series.isin

0
投票

我会创建一个函数。使用Series.isin以便选择其他ID

© www.soinside.com 2019 - 2024. All rights reserved.