我有一些乱七八糟的传感器读取数据像这样。每条记录(长度不同)用“----”分隔并堆叠在一起。有没有办法把它展平成一个数据帧,其中每一行都是一条记录?你知道吗
test = pd.DataFrame({"Messy":["21/12/2017 11:12:48","Port:4","Reading 1: 1","----","21/12/2017 11:13:48","Port:4","Reading 1: 2","Reading 2: 2.5","----"]})
test
Messy
0 21/12/2017 11:12:48
1 Port:4
2 Reading 1: 1
3 ----
4 21/12/2017 11:13:48
5 Port:4
6 Reading 1: 2
7 Reading 2: 2.5
8 ----
我想要的是这样的东西:
target = pd.DataFrame({"Time":["21/12/2017 11:12:48","21/12/2017 11:13:48"],"Port":["Port:4","Port:4"],"Field1":['Reading 1: 1','Reading 1: 2'],"Field2":['','Reading 2: 2.5']})
target
Field1 Feild2 Port Time
0 Reading 1: 1 Port:4 21/12/2017 11:12:48
1 Reading 1: 2 Reading 2: 2.5 Port:4 21/12/2017 11:13:48
下面是一个解决方案。你的数据乱七八糟。此方法假定您的所有数据都是按4列分组结构的。你知道吗
假设最多有4列,并且所有记录的顺序都相同,下面是另一个使用
re
、io
和pandas
的解决方案:您可以通过在
pd.read_csv()
函数的nameslist
属性中添加更多列名来扩展此解决方案,例如,如果数据中的一条记录最多有10列,只需将它们映射到10个列名即可。你知道吗显然,它确实依赖于数据,但您可以尝试:
相关问题 更多 >
编程相关推荐