繁体   English   中英

根据另一列拆分CSV文件的一列

[英]Split one column of csv file based on another column

我正在尝试将温度数据的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值都与包含值January的行数重复。 即,而不是12,18,19等依次变为12,12,12,12,12,12,18,18,18,18,18,19,19,19,19

我尝试了以下方法:

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

但是我收到以下错误: ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 我认为是因为它试图查看整个列而不是等效的行。

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

g = df.groupby('MonthCategorical')['AirTemperature'].mean().reset_index(name='MeanAirTemperature')

这将返回:

  MonthCategorical  MeanAirTemperature
0          January                  22

然后,您可以选择要分组的列(即,不是MonthCategorical而是只能按Month分组...)。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM