Фильтрация внутри групп в полярахPython

Программы на Python
Ответить
Anonymous
 Фильтрация внутри групп в полярах

Сообщение Anonymous »

Я новичок в Polars и мне нужен совет экспертов. У меня есть рабочий код, но я верю, что есть более быстрый и/или более элегантный способ сделать это. У меня есть большой фрейм данных с релевантными столбцами cik(int), form(string) и period(date). Форма может иметь значение «10-Q» или «10-K». Каждый cik будет иметь множество строк двух типов форм с разными периодами.
Что я хочу получить в итоге, так это то, что для каждой группы cik остается только самая последняя 10-Q и только самые последние 10 10-K. Конечно, если форм 10-К меньше 10, все должно остаться.
Вот что я сейчас делаю (работает):
def filter_sub_for_11_rows_per_cik(df_):
df = df_.sort('cik')
# Keep only the last 10-Q
q_filtered_df = df.group_by('cik').map_groups(
lambda g:
g.sort('period', descending=True).filter(pl.col('form').eq('10-Q')).head(1))
# Keep the last up to 10 10-Ks
k_filtered_df = df.group_by('cik').map_groups(
lambda g:
g.sort('period', descending=True)
.filter(pl.col('form').eq('10-K'))
.slice(0, min(10, g.filter(pl.col('form').eq('10-K')).shape[0]))
)
return pl.concat([q_filtered_df, k_filtered_df])


Подробнее здесь: https://stackoverflow.com/questions/782 ... -in-polars
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»