Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一列拆分csv文件的一列_Python_Csv_Pandas_Reference - Fatal编程技术网

Python 基于另一列拆分csv文件的一列

Python 基于另一列拆分csv文件的一列,python,csv,pandas,reference,Python,Csv,Pandas,Reference,我正在尝试将温度数据的csv文件拆分成更小的字典,以便计算每个月的平均温度。csv文件的格式如下: AirTemperature AirHumidity SoilTemperature SoilMoisture LightIntensity WindSpeed Year Month Day Hour Minute Second TimeStamp MonthCategorical 12 68 19 65 60 2 2016 1 1

我正在尝试将温度数据的csv文件拆分成更小的字典,以便计算每个月的平均温度。csv文件的格式如下:

AirTemperature  AirHumidity SoilTemperature SoilMoisture    LightIntensity  WindSpeed   Year    Month   Day Hour    Minute  Second  TimeStamp   MonthCategorical
12  68  19  65  60  2   2016    1   1   0   1   1   10100   January
18  34  14  42  19  0   2016    1   1   1   1   1   10101   January
19  98  14  41  30  4   2016    1   1   2   1   1   10102   January
16  88  16  68  54  4   2016    1   1   3   1   1   10103   January
16  44  20  41  10  1   2016    1   1   4   1   1   10104   January
22  54  18  65  94  0   2016    1   1   5   1   1   10105   January
18  84  17  41  40  4   2016    1   1   6   1   1   10106   January
20  88  22  92  31  0   2016    1   1   7   1   1   10107   January
23  1   22  59  3   0   2016    1   1   8   1   1   10108   January
23  3   22  72  41  4   2016    1   1   9   1   1   10109   January
24  63  23  83  85  0   2016    1   1   10  1   1   10110   January
29  73  27  50  1   4   2016    1   1   11  1   1   10111   January
28  37  30  46  29  3   2016    1   1   12  1   1   10112   January
30  99  32  78  73  4   2016    1   1   13  1   1   10113   January
32  72  31  80  80  1   2016    1   1   14  1   1   10114   January
6个月内每天有24个读数

我可以通过以下代码到达一半:

for row in df['AirTemperature']:
    for equivalentRow in df['MonthCategorical']:
        if equivalentRow == "January":
            JanuaryAirTemperatures.append(row)
但是,它的输出将每个AirTemp值与包含该值的行数进行复制。也就是说,不是12,18,19等等,而是12,12,12,12,18,18,18,18,18,18,18,19,19,19,19,19,19

我尝试了以下方法:

for row in df['AirTemperature']:
    if df['MonthCategorical'] == "January":
        JanuaryAirTemperatures.append(row)

但是我得到了以下错误:
ValueError:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

IIUC,您可以按月分组,并通过以下方法获得每月气温的平均值:

g = df.groupby('MonthCategorical')['AirTemperature'].mean().reset_index(name='MeanAirTemperature')
这将返回:

  MonthCategorical  MeanAirTemperature
0          January                  22
然后,您可以选择要按哪些列分组(即,您可以只按
月份
分组,而不按
月份
分组…)

编辑: 您还可以使用
transform
获取要附加到原始数据帧的新列,包括:

df['MeanAirTemperature'] = df.groupby('MonthCategorical')['AirTemperature'].transform('mean')

对不起,还有一个问题。有了这个,我如何在不按列分组的情况下包含其他列。例如,包括月、平均气温和日?@PaulBarr请参阅“编辑希望”,这会有所帮助,然后您可以获得包含所需列的整个数据帧的子样本。谢谢,非常感谢