Удалить строки из кадра данных на основе номера строки - PullRequest
0 голосов
/ 25 апреля 2019

Предположим, что у меня есть фрейм данных (DF), а также массив, подобный этому:

rm_indexes = np.array([1, 2, 3, 4, 34, 100, 154, 155, 199])

Я хочу удалить номера строк в rm_indexes из DF.Один в rm_indexes означает строку номер один (вторая строка DF), три означает третий ряд фрейма данных и т. Д. (Первая строка 0).Столбец индекса этого фрейма данных имеет метку времени.

PS. У меня много идентичных меток времени, как у индекса фрейма данных.

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

Вы можете просто упасть по индексу.Это удалит записи в df через индексы 1, 2, 3, 4..etc .. 199.

df.reset_index()    #this will change the index from timestamp to 0,1,2...n-1
df.drop([1, 2, 3, 4, 34, 100, 154, 155, 199])  # will drop the rows
df.index = df['myTimeStamp']  # this will restore the index back to timestamp
1 голос
/ 25 апреля 2019

Попробуйте:

df.drop(df.index[rm_indexes])

пример :

import pandas as pd

df = pd.DataFrame({"A":[0,1,2,3,4,5,6,7,8],
                   "B":[0,1,2,3,4,5,6,7,8],
                   "C":[0,1,2,3,4,5,6,7,8]})

pos = [0,2,4]
df.drop(df.index[pos], inplace=True)

вывод

    A   B   C
1   1   1   1
3   3   3   3
5   5   5   5
6   6   6   6
7   7   7   7
8   8   8   8

РЕДАКТИРОВАТЬ , после дополнительной спецификации, предоставленной OP: несколько строк с одинаковым индексом

df = pd.DataFrame({"A":[0,1,2,3,4,5,6,7,8],
                   "B":[0,1,2,3,4,5,6,7,8],
                   "C":[0,1,2,3,4,5,6,7,8],},
                   index=["a","b","b","a","b","c","c","d","e"])
df['idx'] = df.index

pos = [1]
df.reset_index(drop=True, inplace=True)
df.drop(df.index[pos], inplace=True)
df.set_index('idx', inplace=True)

вывод

    A   B   C
idx         
a   0   0   0
b   2   2   2
a   3   3   3
b   4   4   4
c   5   5   5
c   6   6   6
d   7   7   7
e   8   8   8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...