python - 读取多个 csv 文件(大小 mxm)并加载为 n 维数组(大小 nxmxm)(不连接)
问题描述
我正在开发一个需要将大量 csv 文件(数千个)加载到数组中的程序。
csv 文件的尺寸为 45x100,我想创建一个尺寸为 nx45x100 的 3-d 数组。现在,我使用 pd.read_csv() 加载每个 csv 文件,然后使用 np.array() 将每个文件转换为数组。然后我使用 np.array(data_0, data_1,...,data_n) 创建一个 3d 数组,我得到一个具有所需尺寸的 3d 数组。
虽然它有效,但它非常乏味。有没有什么方法可以在不单独读取和处理每个 csv 文件的情况下做到这一点?
#this is my current code
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
mBGS5L = pd.read_csv("strain5.csv") #45x100
mBGS8L = pd.read_csv("strain8.csv")
mBGS10L = pd.read_csv("strain10.csv")
mBGS5L_ = np.array(mBGS5L)
mBGS8L_ = np.array(mBGS8L)
mBGS10L_ = np.array(mBGS10L)
mBGS = np.array([mBGS5L_,mBGS8L_,mBGS10L_])
#to which mBGS.shape returns a 3x45x100 array'''
注意:我已经检查了将多个 csv 文件加载到 1 个数据帧中的其他 stackoverflow 链接,我从中了解了 glob 以获取我需要的所有 csv 文件的列表。不过我的问题是使用 glob 并连接 csv 文件会返回一个列表而不是 3d 数组——我无法将其转换为 numpy 数组,因为它会返回错误
from glob import glob
strain = glob("strain*.csv")
df= [pd.read_csv(f) for f in strain]
df_ = np.asarray(df)
#this returns an error: cannot copy sequence with size 45 to array axis with dimension 30
任何帮助将不胜感激。谢谢
解决方案
首先,您需要将dataframes
in 转换为 mxm 数组。参考下面的代码
from glob import glob
import numpy as np
strain = glob("strain*.csv")
df = [pd.read_csv(f).values for f in strain]
df_ = np.asarray(df)
推荐阅读
- c++ - 如何在放置 .cpp 文件的目录中创建目录?
- pandas - 将术语-文档矩阵限制为最常见的一元组
- c# - 如何使用 Bing 地图检索邮政地址的纬度和经度?
- javascript - 为什么 React.memo 没有按预期工作?
- python-3.x - 正则表达式中缺少前导或尾随空格会使搜索无效
- c# - 如何在 uwp 中使用 DoubleToVisibilityConverter
- vertica - 为什么我需要 3 个节点来实现 k 安全值 1
- java - 在 SQL SERVER 中存储来自 Java 的日期和时间
- php - 在 PHP 中处理 HTML 表单的问题
- node.js - 这种类型的查询对 sql 注入安全吗?