在同一个 CSV 文件中保存多个不同大小的列/变量

Posted

技术标签:

【中文标题】在同一个 CSV 文件中保存多个不同大小的列/变量【英文标题】:Saving multiple columns/variables with different sizes in the same CSV file 【发布时间】:2019-06-17 23:54:57 【问题描述】:

我有大约 100 列,每一列都有大量值。我想将它们保存在 CSV 文件中,以便我可以读取文件并在我的代码中使用这些列中的值。唯一的问题是这些列彼此不相关,并且它们具有不同的长度,因此它们在技术上不是数据框的一部分。

我正在考虑将它们存储在 CSV 文件中,然后分别读取每一列并在我的代码中使用它。因为这些列的长度不同并且不是数据框的一部分,所以我想我必须在使用之前过滤掉每列中的NaN 值。

我想知道是否有一种更简单的方法可以存储(在文件中)和读取这些列。我正在考虑可能是列表或类似的东西。

提前致谢。

【问题讨论】:

I have about 100 columns with a large number of values in each one of them. 你的数据在 Python 中是如何存储的? NumPy 数组、Pandas 系列、Python 列表,还有什么? 你从哪里得到数据?谁或什么程序将数据保存到文件中?由于您的列彼此不相关并且长度不同,我建议为每列使用一行。这样,您可以逐行解析 csv 并逐个提取每个“列”。您还可以将您的数据保存为 xml 或 jason,它们具有极其灵活的数据存储格式,并具有跨编程语言的强大支持。 感谢 jpp 和 jochen。数据已手动创建并存储在 CSV 文件中。我通常会读取 CSV 文件并将数据放入 pandas 数据框中。 嗨,jochen。我正在考虑将每个变量的值保存在一行中,但负责数据输入的人使用 excel 列比使用行更容易。不幸的是,我没有任何在 jason 或 xml 中手动保存数据的经验。 【参考方案1】:

CSV 不是一种非常适合您的任务的格式。

由于您已经拥有一系列数据帧,我建议您考虑使用 HDF5 将数据帧有效地存储在单个文件中。您可以同时启用压缩:

for idx, df in enumerate(list_of_dfs):
    df.to_hdf('data.h5', f'df_idx', complib='zlib', complevel=5)

这会将有序标识符附加到每个数据帧,即df_0df_1 等。然后您可以通过pd.read_hdf 读取特定数据帧。例如:

first_df = pd.read_hdf('data.h5', key='df_0')

【讨论】:

以上是关于在同一个 CSV 文件中保存多个不同大小的列/变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Excel 中组合具有不同列名和列顺序的多个 CSV 文件?

重命名非常大的 CSV 数据文件的列 [重复]

Python pandas 保存多个不同名称的 CSV

Python:从 CSV 文件中的列创建多个文本文件

使用 Spark 将多个文件中的列合并到单个文件中

在读取多个 csv 文件时,是不是可以使用每只股票的名称创建一个名为ticker 的列?