Groupby,AGG,应用于数据框以创建新的数据框

时间:2019-12-13 13:52:06

标签: python pandas dataframe

我显示了数据框的第一行,其中AdminStrata代表了国家/地区的省份(数据框包含一个以上的国家/地区):

我将获得以下数据框/输出:

在实践中,我想针对每个国家和每个AdminStrata,找到时间间隔(及其长度),并且没有中断(没有NaN值),重点放在“指标”列。 / p>

我已经使用下面的代码获得了所需的输出,但是我将以更加优雅的方式使用Pandas函数(例如,没有for循环)。

df_temporal_series = []
for country in df.Country.unique():
    sub_df = df[df.Country == country]
    sub_df = sub_df.groupby(["Datetime", "AdminStrata"]).mean()["Metric"].unstack()
    for adminStrata in sub_df: 
        agged = sub_df[adminStrata].loc[sub_df[adminStrata].first_valid_index():sub_df[adminStrata].last_valid_index()]
        agged = agged.groupby(sub_df[adminStrata].isnull().cumsum()).agg(Start = pd.Series.first_valid_index, Stop = pd.Series.last_valid_index, Length = "count").dropna()
        agged.insert(0, "AdminStrata", adminStrata)
        agged.insert(0, "Country", country)
        df_temporal_series.append(agged)

df_temporal_series = pd.concat(df_temporal_series)
df_temporal_series.reset_index(drop = True, inplace = True)

有可能吗?

0 个答案:

没有答案