Удалите все вхождения элемента и последующего за ним в столбце данных pandas. - PullRequest
1 голос
/ 22 марта 2020

У меня есть один столбец pandas фрейм данных с именем столбца 0. Ниже приведен код, который я написал, чтобы удалить все вхождения строки ' & \n':

df.drop(df[(df[0] == ' & \n')].index, inplace=True)

, и это сработало успешно.

Что я должен сделать sh, это также удалить строку это сразу же следует за строками, которые я вставил в коде выше.

Один из способов, о котором я подумал, - это получить индексы всех удалений, которые мне нужно сделать.

listofremovals = df.index[df[0] == ' & \n'].tolist()

for i in range(len(listofremovals)):
    listofremovals.append(listofremovals[i]+1)
listofremovals.sort()

, а затем df.drop(listofremovals, inplace=True)

Это прекрасно работает, но должен быть более простой метод, который я ищу.

1 Ответ

1 голос
/ 22 марта 2020

Используйте Series.shift для следующих строк, цепочка по оригиналу с | для побитового ИЛИ и последнее удаление строк по инвертированной маске с помощью ~ с boolean indexing:

df = pd.DataFrame({
         0:['new',' & \n','a',' & \n', 'w','ee']
})

print (df)
       0
0    new
1   & \n
2      a
3   & \n
4      w
5     ee

m = (df[0] == ' & \n')
m1 = m.shift(fill_value=False)

df = df[~(m | m1)]
print (df)
     0
0  new
5   ee
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...