问题描述
我有一个 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()