如何在pandas中使用不同的变量在groupby中迭代groupby?

时间:2021-05-05 07:12:15

标签: python pandas dataframe pandas-groupby

我有一个庞大的数据集,其中包含 50 多个城市每天每小时的温度数据。我想按日期获取每个城市的最大值、最小值和平均温度数据框。例如数据集包含

城市日期时间温度

我想要每个城市的数据框,其中包含每天的最高、最低和平均温度(如 city1_df、city2_df)等。我在 groupby 中尝试过 groupby 函数,但不知道如何使用不同的变量迭代该过程名字。

cities=df.groupby('City')
city1=cities.get_group('New York')

city1_max=city1.groupby('Date').max()
city1_min=city1.groupby('Date').min()
city1_avg=city1.groupby('Date').mean()

city1_max=city1_max.drop(columns=['City','Time'])
city1_min=city1_min.drop(columns=['City','Time'])

city1_max=city1_max.rename(columns={'Temperature':'Max Temp'})
city1_min=city1_min.rename(columns={'Temperature':'Min Temp'})
city1_avg=city1_avg.rename(columns={'Temperature':'Avg Temp'})

city1_df=pd.concat(['city1_max','city1_min','city1_avg'], axis=1)

如何在各个城市自动执行此过程?

1 个答案:

答案 0 :(得分:0)

您可以直接分组CityDate,并在min列上应用maxmeanTemperature函数。

然后使用 pandas.MultiIndex.get_level_values() 返回所有城市并将它们检索到列表中。

df_ = df.groupby(['City', 'Date'])['Temperature'].agg(['min', 'max', 'mean']).set_axis(['Min Temp', 'Max Temp', 'Mean Temp'], axis=1)

dfs = [df_.loc[city] for city in df_.index.get_level_values(0)]