我显示了数据框的第一行,其中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)
有可能吗?