python - 根据另一列拆分 csv 文件的一列

标签 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   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 值都重复包含值一月的行数。 IE。而不是 12,18,19 等,而是 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:系列的真值不明确。使用 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

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

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

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

关于python - 根据另一列拆分 csv 文件的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871090/

相关文章:

java - GetMapping 使用 Spring Boot 生成 CSV 文件

python - 用于包装嘈杂的 python 脚本并使用 sed 删除特定行的 shell 命令问题

c# - 使用 odbc 在 csv 文件中执行 SQL 查询

python - CSV 文件 - 合并,如果具有相同值的列执行 :

python - 将 Pandas 数据框转换为字典,其中键是索引,值是列值列表

python - 使用一系列值及其频率作为字典绘制直方图

Python数据结构按字母顺序排序列表

python - 将 Python 变量传递给批处理文件

python - 如何从 Reddit 子版 block 中获取随机帖子(praw)

python - 获取数据帧的所有单元格作为(索引,列)的元组以传递给 df.apply()