Python 从groupby中提取组

Python 从groupby中提取组,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有一个数据框: 我根据其中的日期栏对其进行了分组 现在,我正在从最小日期循环到最大日期,在内部循环中,我试图获取该日期的数据帧 我是这样做的: grouped_df = df.group_by('date') for d in range(min_date, max_date + timedelta(days=1)): dated_df = grouped_df.get_group(d) 这对我来说很好,但只适用于范围内的日期。对于像2017年9月2020日这样不存在的日期da

我有一个数据框:

我根据其中的日期栏对其进行了分组

现在,我正在从最小日期循环到最大日期,在内部循环中,我试图获取该日期的数据帧

我是这样做的:


grouped_df = df.group_by('date')
for d in range(min_date, max_date + timedelta(days=1)):
     dated_df = grouped_df.get_group(d)
这对我来说很好,但只适用于范围内的日期。对于像2017年9月2020日这样不存在的日期
dated\u df=grouped\u df.get\u group(d)
这是一个抛出错误

有人能帮我获取空数据帧而不是错误吗。我不想使用try-except。
谢谢。

如果您不想尝试除之外的
操作,您可以检查是否存在:

all_dates = set(df['date'])
for d in range(min_date, max_date + timedelta(days=1)):
     dated_df = grouped_df.get_group(d) if d in all_dates else None

如果不想执行除
之外的
尝试,可以检查是否存在:

all_dates = set(df['date'])
for d in range(min_date, max_date + timedelta(days=1)):
     dated_df = grouped_df.get_group(d) if d in all_dates else None

您也可以简单地迭代组,这样就不必担心丢失日期

grouped_df = df.group_by('date')

for date, group in grouped_df:
    if date in range(min_date, max_date + timedelta(days=1)):
        dated_df = group

这是假设最小和最大日期不在整个
df['date']
范围内。如果目的是查看
df
中的所有日期,则不需要If语句。

您也可以简单地遍历组,这样就不必担心丢失日期

grouped_df = df.group_by('date')

for date, group in grouped_df:
    if date in range(min_date, max_date + timedelta(days=1)):
        dated_df = group

这是假设最小和最大日期不在整个
df['date']
范围内。如果目的是查看
df
中的所有日期,则不需要If语句。

只迭代
groupby
创建的组

用于分组的\u df.groups.keys()中的d:
日期=分组数据。获取数据组(d)

但是groups.keys()不一定保留顺序。

只迭代
groupby
创建的组

用于分组的\u df.groups.keys()中的d:
日期=分组数据。获取数据组(d)

但是,groups.keys()不一定保留顺序。

很乐意提供帮助,但首先需要提供5行数据。请再查一下。谢谢。请发布您期望的outputhappy以提供帮助,但首先您需要提供5行数据。请再查一下。谢谢。请张贴您的预期输出