如何将<K: Date, V: Int>结构的RSSI数据字符串转为Pandas DataFrame
解决方案
你可以按以下步骤将字符串解析为带时间类型的Pandas DataFrame:
步骤1:拆分原始字符串,提取时间和RSSI键值对
由于原始字符串的格式是外层包裹方括号,内部用逗号分隔每个<时间:RSSI>对,且时间字段内部也包含冒号,因此需要从右侧分割第一个冒号来区分键和值,避免拆分时间字段。
步骤2:类型转换并生成DataFrame
可直接运行的完整代码如下:
import pandas as pd # 你的原始字符串 string = '[2021-10-17 06:52:00 +0000: -47, 2021-10-17 06:52:04 +0000: -50, 2021-10-17 06:52:03 +0000: -50, 2021-10-17 06:52:02 +0000: -47, 2021-10-17 06:52:08 +0000: -46, 2021-10-17 06:51:57 +0000: -50, 2021-10-17 06:52:09 +0000: -48, 2021-10-17 06:52:05 +0000: -49, 2021-10-17 06:52:01 +0000: -48, 2021-10-17 06:51:58 +0000: -50, 2021-10-17 06:51:59 +0000: -50, 2021-10-17 06:52:06 +0000: -47, 2021-10-17 06:52:07 +0000: -48]' # 处理字符串提取数据 data_list = [] # 先去掉外层方括号,再按逗号分割每个键值对 for entry in string.strip('[]').split(', '): # 从右侧分割第一个冒号,避免拆分时间内部的冒号 date_part, rssi_part = entry.rsplit(':', 1) data_list.append({ 'Date': date_part.strip(), 'RSSI': int(rssi_part.strip()) }) # 生成DataFrame并转换时间类型 df = pd.DataFrame(data_list) df['Date'] = pd.to_datetime(df['Date']) # 可选:将时间列设为索引,方便后续时间序列计算、ML特征提取 # df = df.set_index('Date')
验证结果
运行后打印df.head(2)即可看到和你给出的样例一致的输出:
| Date | RSSI | |
|---|---|---|
| 0 | 2021-10-17 06:52:00+00:00 | -47 |
| 1 | 2021-10-17 06:52:04+00:00 | -50 |
其中Date列已经是Pandas内置的datetime64类型,RSSI为int类型,可直接用于后续模型计算。
内容的提问来源于stack exchange,提问作者Visal Rajapakse
相关产品推荐
相关产品推荐

