Как вывести по Н позиций из каждой компании из списка?

таблица pandas где хранится информация по фирмам разным. по 420 данных на каждую фирму. Не могу отобрать по 20 данных из каждой фирмы чтоб переформировать таблицу

таблица pandas, где хранится информация по фирмам разным. по 420 данных на каждую фирму. Не могу отобрать по 20 первых строк для каждой фирмы, чтобы переформировать таблицу

import pandas as pd
stockQuotes = pd.read_json (r'D:\NeuroNet\DataBase\TimeSeriesPD.json')
stockQuotes = stockQuotes \
    .rename(columns = {0: 'Company', 1: 'DataTime', 2: 'Price'})
stockQuotesCAT = stockQuotes.loc[stockQuotes.Company == 'CAT'].reset_index()
del stockQuotesCAT['index'] 
stockQuotesCAT.to_json('TimeSeriesCatPD.json')
stockQuotesNoCAT = stockQuotes.loc[stockQuotes.Company != 
'CAT'].reset_index()
del stockQuotesNoCAT['index'] 
stockQuotesNoCAT.to_json('TimeSeriesNoCatPD.json')

Ответы (1 шт):

Автор решения: CrazyElf

Вроде как-то так должно получиться с использованием группировки и кумулятивного счётчика:

stockQuotes.loc[stockQuotes.groupby('Company').cumcount() < 20]

Если вам нужно не просто по 20 первых записей от каждой компании, а с учётом какой-то сортировки (например, по дате) - отсортируйте предварительно ваш DataFrame нужным образом.

→ Ссылка