根据另一列拆分一列csv文件

时间:2016-03-08 15:14:03

标签: python csv pandas reference

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

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

在6个月内每天有24个读数。

我可以使用以下代码获得一半:

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

但是这个输出的每个AirTemp值都与包含值January的行数重复。即它不是12,18,19等12,12,12,12,11,18,18,18,18,19,19,19,19

我尝试了以下内容:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

但是我收到以下错误:{{1}}我假设因为它试图查看整个列而不是等效行。

1 个答案:

答案 0 :(得分:2)

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')