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

如何在Pandas中合并多设备CPU、Mem时序数据并输出为CSV文件

解决方案:合并多设备CPU/Mem时序数据并输出CSV

针对你的需求——将所有设备的CPU数据合并为单个仅含date和cpu列的CSV,同时将内存数据合并为另一个仅含date和mem列的CSV,这里提供两种实现方案,你可以根据场景选择:

方法1:直接提取列(高效推荐)

不需要循环遍历每个设备,直接对原始DataFrame做列提取和过滤即可,代码简洁且性能更好:

import pandas as pd
import numpy as np

# 加载原始数据,自动解析date列为日期类型
df = pd.read_csv("metrics_copy.csv", parse_dates=["date"])
# 将device字段转为字符串类型(保持和你的原始代码一致)
df['device'] = df['device'].astype(str)

# 提取所有date和cpu数据,过滤掉cpu为空的行(若要保留空值可去掉dropna)
cpu_combined = df[['date', 'cpu']].dropna(subset=['cpu'])
# 按日期排序(可选,让时序更规整)
cpu_combined = cpu_combined.sort_values('date')
# 输出为CSV,不保留索引列
cpu_combined.to_csv("all_devices_cpu.csv", index=False)

# 同理处理mem数据
mem_combined = df[['date', 'mem']].dropna(subset=['mem'])
mem_combined = mem_combined.sort_values('date')
mem_combined.to_csv("all_devices_mem.csv", index=False)

方法2:按设备循环合并(贴合你的原始思路)

如果你需要对每个设备的数据做额外处理(比如清洗、转换),可以沿用循环设备的思路,逐步合并数据:

import pandas as pd
import numpy as np

df = pd.read_csv("metrics_copy.csv", parse_dates=["date"])
df['device'] = df['device'].astype(str)

# 获取所有唯一设备
unique_devices = np.unique(df['device'].values)

# 初始化空的DataFrame用于存储合并后的数据
cpu_combined = pd.DataFrame(columns=['date', 'cpu'])
mem_combined = pd.DataFrame(columns=['date', 'mem'])

for device in unique_devices:
    # 筛选当前设备的所有行
    device_data = df[df['device'] == device]
    
    # 提取当前设备的cpu数据(过滤空值)并合并
    cpu_part = device_data[['date', 'cpu']].dropna(subset=['cpu'])
    cpu_combined = pd.concat([cpu_combined, cpu_part], ignore_index=True)
    
    # 提取当前设备的mem数据(过滤空值)并合并
    mem_part = device_data[['date', 'mem']].dropna(subset=['mem'])
    mem_combined = pd.concat([mem_combined, mem_part], ignore_index=True)

# 按日期排序后输出
cpu_combined.sort_values('date').to_csv("all_devices_cpu.csv", index=False)
mem_combined.sort_values('date').to_csv("all_devices_mem.csv", index=False)

关键说明

  • dropna(subset=['cpu'])用于过滤掉CPU值为空的行,如果你希望保留这些空值记录,直接删除该部分代码即可。
  • sort_values('date')用于将时序数据按日期排序,让输出的CSV数据按时间顺序排列,属于可选操作。
  • index=False确保输出的CSV不会包含Pandas自动生成的索引列,符合常规的CSV数据格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:36:43