我正在尝试将温度数据的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}}我假设因为它试图查看整个列而不是等效行。
答案 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')