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

如何编写for循环从多个不同Excel(csv)文件提取两列生成数组

基础说明

先解答你提到的几个核心疑问:

  • Python中和MATLAB向量对应的就是numpy数组,你用pandas读取得到的df['列名']是Series结构,可以直接当一维数组用,也可以用.to_numpy()方法显式转为标准numpy数组
  • 你代码中用到的data是字典(dict),是Python的键值对存储结构,你这里用文件名作为「键」,对应读取到的DataFrame作为「值」,取值逻辑非常简单:data[键名]即可取出对应的数据,比如要获取BLUE文件的CURR列,写法就是data['BLUE']['CURR'],和你单文件处理时的blue['Curr']逻辑完全一致。

代码实现

第一步:修正你的批量读取代码

你原先的代码缺少字典初始化步骤,会直接报错,修正后完整读取逻辑如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 你的文件名列表
files = ['BLUE' , 'BLUE.REV', 'GREEN', 'GREEN.REV', 'NITRO', 'PURPLE', 'PURPLE.REV', 'RED','RED.REV','SAND','YELLOW.REW','YELLW']
# 初始化空字典,分别存储原始数据、CURR数组、VOLT数组
data = {}
x_data = {}
y_data = {}

for file_name in files:
    # 注意:这里的列名要和你实际csv文件的列名大小写完全一致,如果你文件里是首字母大写的Volt、Curr,要对应修改
    df = pd.read_csv(f"{file_name}.csv", usecols = ['VOLT', 'CURR'])
    data[file_name] = df
    # 提取对应数组,和你单文件处理的blueX、blueY逻辑完全一致
    x_data[file_name] = df['CURR'] # 要转numpy数组就改成 df['CURR'].to_numpy()
    y_data[file_name] = df['VOLT']

第二步:数据使用方式

你要获取单个文件的X、Y数组直接取值即可:

# 取BLUE文件的电流、电压数组
blue_x = x_data['BLUE']
blue_y = y_data['BLUE']

# 单文件绘图逻辑和你之前的写法完全一致
plt.plot(blue_x, blue_y, 'r', label='BLUE')
plt.title('BLUE IV Curve')
plt.legend()
plt.xlabel('Current [A]')
plt.ylabel('Voltage [V]')
plt.show()

如果需要批量绘制所有文件的曲线,可以直接在循环里处理:

plt.figure(figsize=(10,6))
for file_name in files:
    plt.plot(x_data[file_name], y_data[file_name], label=file_name)
plt.xlabel('Current [A]')
plt.ylabel('Voltage [V]')
plt.title('All Samples IV Curve')
plt.legend()
plt.show()

注意事项

  • 务必确认csv文件的列名大小写,你单文件处理时用的是Volt、Curr,批量代码里写的是VOLT、CURR,如果和实际文件列名不匹配会报错,需要对应修改
  • 如果你不需要保留所有文件的原始DataFrame,只需要电流电压数组,可以删除data字典的存储逻辑,仅保留x_data和y_data即可,节省内存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:03