удалить первые 2 строки в кадре данных на основе значения в другом столбце - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть df с биржевыми тикерами в столбце, а следующий столбец называется «Быстрое добавление», который будет либо заполнен значением «Добавить», либо будет пустым.

Я хочу удалить 2 тикеры акций, но только там, где столбец быстрого добавления = ДОБАВИТЬ. приведенный ниже код удалит первые 2 строки, но мне нужно добавить аргумент, который удаляет только первые 2 строки, где столбец «Быстрое добавление» = «Добавить». Может кто-нибудь помочь, пожалуйста

new_df = df_obj[2:]

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Вы можете использовать функцию drop в Pandas, чтобы удалить определенные индексы c из DataFrame. Вот пример кода для вашего варианта использования:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Ticker': ['A', 'B', 'C', 'D'],
    'Fast Add': ['Add', np.nan, 'Add', 'Add']
})

new_df = df.drop(df[df['Fast Add'] == 'Add'][:2].index)

new_df - это DataFrame со следующим содержимым:

  Ticker Fast Add
1      B      NaN
3      D      Add

Подход здесь состоит в том, чтобы выбрать все строки, которые вы хотите удалить и затем передать их индексы в DataFrame.drop(), чтобы удалить их.

Ссылки:

0 голосов
/ 03 апреля 2020

IIU C что-то вроде этого должно работать:

df_obj["record_idx"] = df_obj.groupby('FastAdd').cumcount()
new_df = df_obj.query("record_idx >= 2 & FastAdd == 'ADD'")

Вы также можете использовать дешевый хак, как показано ниже:

df_obj.sort_values("FastAdd", inplace = True)
new_df = df_obj.iloc[2:].copy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...