You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从GPRS路由器 fleet数据中创建指定字段DataFrame并导出CSV?

问题描述

从GPRS路由器集群中提取了一个约200行的DataFrame,已筛选出需要监控的若干特定值,需完成以下两项任务:

  1. 仅使用这些特定值创建新的DataFrame;
  2. 将该DataFrame写入CSV文件。

已有代码及数据样本如下:

现有代码

import pandas as pd

# 数据提取
url ="someurl.splash.com"
status = pd.read_csv(url, sep=':', on_bad_lines='skip', skipinitialspace = True)

# 提取特定值
model = status['value'].iloc[2]
SN = status['value'].iloc[4]
OS = status['value'].iloc[6]
CPUtemp = status['value'].iloc[10]
TOBmodel = status['value'].iloc[63]
firm = status['value'].iloc[64]
IMEI = status['value'].iloc[65]
ICCID = status['value'].iloc[67]
SIMnum = status['value'].iloc[67][6:]
SIMappel = status['value'].iloc[69]
service = status['value'].iloc[73]
band = status['value'].iloc[74]
rssi = status['value'].iloc[75]
network = status['value'].iloc[81]
LAI = status['value'].iloc[82]
LAC = status['value'].iloc[83]
CID = status['value'].iloc[84]
LANIP = status['value'].iloc[112]
LANDHCP = status['value'].iloc[115]
WANIP = status['value'].iloc[130]
dlrate = status['value'].iloc[146]
uprate = status['value'].iloc[147]

Pandas读取后的数据样本

label   value
0   === SYSTEM INFORMATION ===  
1   Product name    NetModule Router
2   Product type    NB800
3   Hardware version    V3.2
4   Serial number   00112B02AC71
5   Operating system    Linux 4.19.163
6   System software 4.7.0.103
7   UBoot   4.7.0.101
8   SPL 4.7.0.101
9   CPU Rev 2.1 Part 0xB944 Mfgr 0x0017 (1000 MHz)
10  CPU temperature 60.2 degrees Celsius
11  RAM 512 MB
12  Flash storage   4096 MB
13  Temperature 60.2 degrees Celsius
14  System errors   none
15  Hydra   happy
16  === CONFIGURATION INFORMATION ===   
17  Config version  1.16
18  Config name user-config
19  Config hash b460665137cdca6cd35a2a0da93c0c5d
解决方案

1. 创建新DataFrame

将已提取的监控值整理成字典,再转换为DataFrame,这种方式简洁易维护:

# 整理监控指标与对应值的字典
monitor_data = {
    "型号": model,
    "序列号": SN,
    "操作系统": OS,
    "CPU温度": CPUtemp,
    "TOB型号": TOBmodel,
    "固件版本": firm,
    "IMEI": IMEI,
    "ICCID": ICCID,
    "SIM卡号": SIMnum,
    "SIM状态": SIMappel,
    "服务类型": service,
    "频段": band,
    "信号强度(RSSI)": rssi,
    "网络类型": network,
    "LAI": LAI,
    "LAC": LAC,
    "CID": CID,
    "LAN IP": LANIP,
    "LAN DHCP状态": LANDHCP,
    "WAN IP": WANIP,
    "下行速率": dlrate,
    "上行速率": uprate
}

# 两种DataFrame格式可选:
# 方式1:指标为行,值为列(适合查看单设备详细参数)
new_df = pd.DataFrame.from_dict(monitor_data, orient='index', columns=['值'])

# 方式2:指标为列,一行数据(适合单设备快照,便于后续批量合并数据)
# new_df = pd.DataFrame([monitor_data])

2. 写入CSV文件

使用Pandas的to_csv方法,根据DataFrame结构调整参数:

# 对应方式1的写入(保留行索引)
new_df.to_csv('路由器监控数据.csv', encoding='utf-8-sig')

# 对应方式2的写入(不写入默认索引,避免冗余)
# new_df.to_csv('路由器监控数据.csv', encoding='utf-8-sig', index=False)
完整代码示例
import pandas as pd

# 数据提取
url ="someurl.splash.com"
status = pd.read_csv(url, sep=':', on_bad_lines='skip', skipinitialspace = True)

# 提取特定值
model = status['value'].iloc[2]
SN = status['value'].iloc[4]
OS = status['value'].iloc[6]
CPUtemp = status['value'].iloc[10]
TOBmodel = status['value'].iloc[63]
firm = status['value'].iloc[64]
IMEI = status['value'].iloc[65]
ICCID = status['value'].iloc[67]
SIMnum = status['value'].iloc[67][6:]
SIMappel = status['value'].iloc[69]
service = status['value'].iloc[73]
band = status['value'].iloc[74]
rssi = status['value'].iloc[75]
network = status['value'].iloc[81]
LAI = status['value'].iloc[82]
LAC = status['value'].iloc[83]
CID = status['value'].iloc[84]
LANIP = status['value'].iloc[112]
LANDHCP = status['value'].iloc[115]
WANIP = status['value'].iloc[130]
dlrate = status['value'].iloc[146]
uprate = status['value'].iloc[147]

# 构建监控数据字典
monitor_data = {
    "型号": model,
    "序列号": SN,
    "操作系统": OS,
    "CPU温度": CPUtemp,
    "TOB型号": TOBmodel,
    "固件版本": firm,
    "IMEI": IMEI,
    "ICCID": ICCID,
    "SIM卡号": SIMnum,
    "SIM状态": SIMappel,
    "服务类型": service,
    "频段": band,
    "信号强度(RSSI)": rssi,
    "网络类型": network,
    "LAI": LAI,
    "LAC": LAC,
    "CID": CID,
    "LAN IP": LANIP,
    "LAN DHCP状态": LANDHCP,
    "WAN IP": WANIP,
    "下行速率": dlrate,
    "上行速率": uprate
}

# 创建新DataFrame(选择适合的方式)
new_df = pd.DataFrame([monitor_data])

# 写入CSV
new_df.to_csv('路由器监控数据.csv', encoding='utf-8-sig', index=False)

内容的提问来源于stack exchange,提问作者BenjiBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:25:38