Я хочу сохранить заголовок столбца, когда использую групповую фильтрацию, даже если датафрейм пуст.
Я фильтрую фрейм данных следующим образом
df_groupby = df.groupby("ID",as_index=False).apply(lambda x: x[x["col"] == x["col"].max()]).reset_index(drop=True)
print(df_groupby)
ID col
0 1 4
1 2 5
Это работает, если фрейм данных не пустой. Однако, если запись пуста, эта фильтрация отбрасывает заголовок столбцов
df_empty = pd.DataFrame(columns=["ID", "col"])
df_groupby = df_empty.groupby("ID",as_index=False,group_keys=True).apply(lambda x: x[x["col"] == x["col"].max()]).reset_index(drop=True)
print(df_groupby)
-
Я ожидаю, что фрейм данных без записи с заголовками будет
ID col
Мое временное решение - добавить эти строки после фильтрации.
if df_groupby.empty:
df_groupby = pd.DataFrame(columns=df_empty.columns)
Я, конечно, думаю, что должен быть лучший способ фильтрации. Как я могу покрыть пустой фрейм данных при фильтрации?