【发布时间】:2020-12-12 00:45:38
【问题描述】:
我正在尝试对 pandas 数据框进行旋转,但我猜是“扭曲”?这是加载到 pandas 中的输入表(tsv)。
timestamp sensor type unit value
1607724078 sensor_a string gps coords1
1607724078 sensor_b int bar 1
1607724079 sensor_a string gps coords5
1607724079 sensor_b int bar 4
1607724080 sensor_a string gps coords9
1607724080 sensor_b int bar 7
输出应该是这样的
timestamp sensor_a sensor_a_type sensor_a_unit sensor_b sensor_b_type sensor_b_unit
1607724078 coords1 string gps 1 int bar
1607724079 coords5 string gps 4 int bar
1607724080 coords9 string gps 7 int bar
如您所见,它应该按时间戳分组,并且传感器列的值必须定义为具有原始值列的值的单独列。此外,原始类型和单位列必须与新的 sensor_x 列“名称合并”并保留它们的值。
目标是将其保存为镶木地板。重要提示:可以有两个以上的传感器。
现在我完成了创建一个包含我需要的所有信息的 MultiIndexed 数据框,但我无法将它写入镶木地板,因为我猜 MultiIndex 必须以某种方式展平,以便传感器单元和类型有自己的独立列。
import pandas as pd
if __name__ == '__main__':
df = pd.read_csv("data/test.tsv", delimiter='\t', index_col='timestamp')
df2 = df.pivot(columns=['sensor', 'unit', 'type'], values='value')
print(df2)
输出
sensor sensor_a sensor_b sensor_c
unit gps bar percent
type string int double
timestamp
1607724078 coords1 1 11.11
1607724079 coords5 4 44.44
1607724080 coords9 7 77.77
提前致谢!
【问题讨论】: