【问题标题】:Create multiple mean columns in csv在 csv 中创建多个平均列
【发布时间】:2016-06-26 12:46:49
【问题描述】:

我有一张表,其值如下:

AirTemperature  AirHumidity SoilTemperature SoilMoisture    LightIntensity  WindSpeed   Year    Month   Day Hour    Minute  Second  TimeStamp   MonthCategorical    TimeOfDay
18  84  17  41  40  4   2016    1   1   6   1   1   10106   January Day
20  88  22  92  31  0   2016    1   1   7   1   1   10107   January Day
23  1   22  59  3   0   2016    1   1   8   1   1   10108   January Day
23  3   22  72  41  4   2016    1   1   9   1   1   10109   January Day
24  63  23  83  85  0   2016    1   1   10  1   1   10110   January Day
29  73  27  50  1   4   2016    1   1   11  1   1   10111   January Day
28  37  30  46  29  3   2016    1   1   12  1   1   10112   January Day

如下所示:

我想计算每天的平均条件(即第 1、2、3、4 天的平均温度和第 1、2、3、4 天的平均空气湿度)。我想用这些值创建一个新的 csv。因此输出具有所有条件的年、月、日、meanAirTemp、MeanAirHumidity 等。

我使用下面的代码只得到一个条件:

NightTimeTemperatures = pd.read_csv('MonthlyDataSplit/Night/MeanNightlyConditions.csv')
MeanMonthlyNightlyTemperatures = NightTimeTemperatures.groupby('Month')['AirTemperature'].mean().reset_index(name='MeanAirTemperature')
MeanMonthlyNightlyTemperatures.to_csv(r'MonthlyDataSplit/Day/SummaryMeanNightlyTemps.csv')

但我想扩展它以对所有条件执行相同的操作。类似于以下内容:

DayTimeTemperatures = pd.read_csv('MonthlyDataSplit/Day/MeanDailyConditions.csv')
MeanMonthlyDailyTemperatures = DayTimeTemperatures.groupby('Month')['AirTemperature','AirHumidity', 'SoilTemperature', 'SoilMoisture', 'LightIntensity', 'WindSpeed'].mean().reset_index(name='meanAirTemperature', 'meanAirHumidity', 'meanSoilTemperature', 'meanSoilMoisture','meanLightIntensity','meanWindSpeed')
MeanMonthlyDailyTemperatures.to_csv(r'MonthlyDataSplit/Day/SummaryMeanDailyConditions.csv')

【问题讨论】:

    标签: python csv pandas mean


    【解决方案1】:

    如果你想使用不同的聚合函数可以使用grp.agg()函数,为不同的列指定不同的聚合函数:

    print(df.groupby(['Year','Month','Day']).agg(
        {'AirTemperature': 'mean',
         'AirHumidity': 'mean',
         'SoilTemperature': 'max'
        }).reset_index())
    

    输出:

       Year  Month  Day  AirTemperature  SoilTemperature  AirHumidity
    0  2016      1    1       23.571429               30    49.857143
    

    【讨论】:

      【解决方案2】:

      IIUC 您可以将meansubset 过滤列一起使用:

      print NightTimeTemperatures.groupby('Month')[['AirTemperature','AirHumidity', 'SoilTemperature', 'SoilMoisture', 'LightIntensity', 'WindSpeed']].mean().reset_index()
         Month  AirTemperature  AirHumidity  SoilTemperature  SoilMoisture  \
      0      1       23.571429    49.857143        23.285714     63.285714   
      
         LightIntensity  WindSpeed  
      0       32.857143   2.142857 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-06
        • 1970-01-01
        • 2020-08-22
        • 2019-05-01
        • 2015-06-30
        • 1970-01-01
        • 2021-01-01
        • 2014-05-30
        相关资源
        最近更新 更多