重新排列 csv rssi 数据以按时间和位置 Python 分组

问题描述

我有一个 csv 文件,它是一段时间内不同接入点的一系列 RSSI 数据记录,格式如下:

Time     | Signal | Location      
07:37:47 | -98.0  | bedroom             
07:37:47 | -96.0  | bedroom                 
07:37:47 | -91.0  | kitchen             
07:37:47 | -95.0  | kitchen             
07:37:47 | -68.0  | stairs                  
07:37:48 | -60.0  | bedroom  
07:37:48 | -60.0  | stairs              
07:37:48 | -62.0  | stairs   
07:37:48 | -60.0  | kitchen  
07:37:48 | -70.0  | kitchen

我想重新排列它以输出每个不同位置每秒的平均信号强度,如下所示:

Time     | bedroom | kitchen  | stairs  
07:37:47 | -97.0   |    -93.0 | -68.0                           
07:37:48 | -60.0   |    -65.0 | -61.0

即我想将接入点的位置移动到每个新列的标题,并在行中获得每秒的平均信号。

有没有一种干净的方法可以使用熊猫来做到这一点?我一直在摆弄 .groupby() 和 .resample() 但想不出一个简单的方法。任何帮助将不胜感激。

谢谢。

解决方法

使用pd.pivot_table获取数据透视表,然后使用reset_index创建Time常规列:

import pandas as pd
import numpy as np

pd.pivot_table(data=df,values="Signal",index="Time",columns="Location",aggfunc=np.mean)\
    .reset_index()