【问题标题】:Rearrange csv rssi data to group by time and location Python重新排列 csv rssi 数据以按时间和位置 Python 分组
【发布时间】:2021-03-05 14:38:52
【问题描述】:

我有一个 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

等等

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

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

谢谢。

【问题讨论】:

标签: python pandas csv rssi


【解决方案1】:

使用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()

【讨论】:

  • 嘿,感谢您的帮助,这完全正确地重塑了它,但是它将“时间”更改为索引,我如何将时间保持为一列,或者我可以有额外的部分怎么改回来?
  • 可以.reset_index()。我已经在评论中添加了它
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
  • 2019-07-21
  • 2018-03-27
  • 2016-01-15
  • 1970-01-01
  • 2021-08-28
相关资源
最近更新 更多