#pandas #dataframe #filter
#pandas #фрейм данных #Фильтр
Вопрос:
У меня есть фрейм данных Pandas, который содержит дополнительные данные в последних нескольких строках. Мне нужно идентифицировать строку с определенным значением столбца и удалить все строки, начиная с этой строки и ниже.
Пример фрейма данных:
Mod Day Initials
1 9/4/18 AV
2 4/20/19 AV
3 7/18/17 AV
4 12/1/13 AV
Program Title Amount
Axis Axis Gig $35
Rex Rex Gig $75
DOM Triple Z $15
Итак, я хотел бы определить, где фрейм данных имеет «Заголовок» в столбце «День», и удалить эту строку и все строки под ней.
Ответ №1:
Вы можете использовать логическую индексацию с df.where
s = """Mod,Day,Initials
1,9/4/18,AV
2,4/20/19,AV
3,7/18/17,AV
4,12/1/13,AV
Program,Title,Amount
Axis,Axis Gig,$35
Rex,Rex Gig,$75
DOM,Triple Z,$15"""
df = pd.read_csv(StringIO(s))
# select where your col equals 'Title' then fill all other values with nan
# forward fill all nan values after title and the use boolean indexing
new_df = df[df['Day'].where(df['Day'] == 'Title', np.nan).ffill() != 'Title']
Mod Day Initials
0 1 9/4/18 AV
1 2 4/20/19 AV
2 3 7/18/17 AV
3 4 12/1/13 AV
Комментарии:
1. Я получаю следующую ошибку: IndexError: однопозиционный индексатор находится вне пределов
Ответ №2:
Вы можете найти индекс и сохранить все только перед этой строкой
df = df[0:df[df['Day'] == 'Title'].index[0]]
df
Вывод
Mod Day Initials
0 1 9/4/18 AV
1 2 4/20/19 AV
2 3 7/18/17 AV
3 4 12/1/13 AV
Комментарии:
1. Я получаю следующую ошибку: IndexError: однопозиционный индексатор находится вне пределов
2. Я не могу воспроизвести ошибку. Я не знаю, что отличается в вашем фрейме данных. Я использовал предоставленный вами фрейм данных в качестве ваших данных.