将Pandas中的多个CSV行转换为一个

时间:2018-12-06 16:11:34

标签: python pandas csv

我只是从Pandas开始,我正在尝试将要保存的数据文件制作成可以导出和读取的文件。我的CSV格式如下:

time    |   parameter   |   value
------------------------------------
1       |       a       |   21
2       |       a       |   21
3       |       a       |   21
1       |       b       |   19
2       |       b       |   19
3       |       b       |   19
1       |       c       |   17
2       |       c       |   17
3       |       c       |   17

我想将其转换为以下形式:

time    |   a   |   b   |   c   
------------------------------------
1       |   21  |   19  |   17  
2       |   21  |   19  |   17  
3       |   21  |   19  |   17  
1       |   21  |   19  |   17  
2       |   21  |   19  |   17  
3       |   21  |   19  |   17  
1       |   21  |   19  |   17  
2       |   21  |   19  |   17  
3       |   21  |   19  |   17  

当然,我的数据具有不同的值,但是上面的示例应该足够了。它是天气数据,例如温度和风速,每行都有测量的时间戳,参数名称和值。

我想将其转换为每个时间戳的3列(或者更多,如果有更多参数的话)的一行,其中列名是参数名。

我知道我必须按时间列对数据进行分组,所以我已经完成了 df.groupby('time')

但是,我无法弄清楚如何执行apply方法,该方法将为我提供所需的结果。任何提示表示赞赏!

1 个答案:

答案 0 :(得分:1)

您可以尝试使用pivot table

pd.pivot_table(df, index='time', columns='parameter', values='value')

parameter   a   b   c
time                 
1          21  19  17
2          21  19  17
3          21  19  17