Найдите N-ую строку, которая соответствует условию в пандах - PullRequest
0 голосов
/ 02 февраля 2019

Допустим, у меня есть следующий фрейм данных:

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

1 Ответ

0 голосов
/ 02 февраля 2019

Можно получить индекс nth True значения выражения (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')
...