首页 > 解决方案 > 在 pandas 中查找匹配条件的第 N 行

问题描述

假设我有以下数据框:

df = pd.DataFrame(np.array(my_list).reshape(3,3), columns = list("abc"))
print (df)
   a  b  c
0  1  2  3
1  4  5  6
2  4  8  9
3  0  1  0

如何仅删除与条件匹配的行的第 n 个实例(例如 的第二个实例df['a'] == 4)?

在这种情况下,结果应该是:

   a  b  c
0  1  2  3
1  4  5  6
3  0  1  0

标签: pythonpandasdataframepattern-matching

解决方案


您可以获得True表达式的第 n 个值的索引(df['a'] == 4)

nth = 2
df.drop(df.index[(df['a'] == 4)][nth-1])

   a  b  c
0  1  2  3
1  4  5  6
3  0  1  0

在哪里,

df['a'] == 4

0    False
1     True
2     True
3    False
Name: a, dtype: bool

和,

df.index[(df['a'] == 4)]
# Int64Index([1, 2], dtype='int64')

推荐阅读