我有一个庞大的数据集,其中包含 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)
如何在各个城市自动执行此过程?
答案 0 :(得分:0)
您可以直接分组City
和Date
,并在min
列上应用max
、mean
和Temperature
函数。
然后使用 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)]