我正在尝试在数据框中逐行删除所有具有相同“ 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')的行都将被删除。
提前感谢。
如果只想在hole_ID
为A
的地方删除重复项,则可以在一侧将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
我会创建一个函数。使用Series.isin
以便选择其他ID