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

使用Pandas实现行值递推更新并为十六进制计数器DataFrame生成时间列

原始DataFrame数据

counterfrequencyresistancephase
015000.000000698.617126-0.745298
116000.000000647.001708-0.269421
217000.000000649.572265-0.097540
318000.000000665.2827750.008724
419000.000000690.836975-0.011101
520000.000000698.051025-0.093241
621000.000000737.854003-0.182556
722000.000000648.586792-0.125149
823000.000000643.014160-0.172503
924000.000000634.954223-0.126519
a25000.000000631.901733-0.122870
b26000.000000629.401123-0.123728
c27000.000000629.442016-0.156490

需求

  1. 使用Pandas实现frequency、resistance、phase列按「常量值+前一行对应值」的规则更新;
  2. 新增time列,初始值t0=0,后续每行时间为前一行时间加采样频率;
  3. 以time列为X轴,frequency、resistance、phase列为Y轴绘制多曲线图表。

解决方案

步骤1:导入依赖并加载数据

import pandas as pd
import matplotlib.pyplot as plt

# 加载原始数据
data = {
    'counter': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c'],
    'frequency': [15000.0, 16000.0, 17000.0, 18000.0, 19000.0, 20000.0, 21000.0, 22000.0, 23000.0, 24000.0, 25000.0, 26000.0, 27000.0],
    'resistance': [698.617126, 647.001708, 649.572265, 665.282775, 690.836975, 698.051025, 737.854003, 648.586792, 643.014160, 634.954223, 631.901733, 629.401123, 629.442016],
    'phase': [-0.745298, -0.269421, -0.097540, 0.008724, -0.011101, -0.093241, -0.182556, -0.125149, -0.172503, -0.126519, -0.122870, -0.123728, -0.156490]
}
df = pd.DataFrame(data)

步骤2:按规则更新列值

自定义常量值delta_val,对指定列从第二行开始执行更新:

# 定义常量值(可根据需求修改)
delta_val = 100

cols_to_update = ['frequency', 'resistance', 'phase']
for col in cols_to_update:
    # 第二行及以后的值 = 前一行对应值 + 常量值
    df.loc[1:, col] = df[col].shift(1)[1:] + delta_val

步骤3:新增time列

自定义采样频率sf,生成时间序列:

# 定义采样频率(可根据需求修改)
sf = 1

# 初始化time列,第一行为0
df['time'] = 0
# 第二行及以后的值 = 前一行time值 + 采样频率
df.loc[1:, 'time'] = df['time'].shift(1)[1:] + sf

步骤4:绘制多曲线图表

# 设置画布大小
plt.figure(figsize=(10, 6))

# 绘制三条曲线并添加标记
plt.plot(df['time'], df['frequency'], label='Frequency', marker='o')
plt.plot(df['time'], df['resistance'], label='Resistance', marker='s')
plt.plot(df['time'], df['phase'], label='Phase', marker='^')

# 设置图表属性
plt.xlabel('Time')
plt.ylabel('Values')
plt.title('Time vs Frequency/Resistance/Phase')
plt.legend()
plt.grid(True)

# 显示图表
plt.show()

说明

  • 常量值delta_val和采样频率sf可根据实际业务需求调整;
  • 若需保留原始列数据,可先复制列再操作,例如df['frequency_updated'] = df['frequency'];
  • 绘图样式(颜色、标记、画布尺寸等)可根据需求自定义修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:03:16