在同一个 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_0
、df_1
等。然后您可以通过pd.read_hdf
读取特定数据帧。例如:
first_df = pd.read_hdf('data.h5', key='df_0')
【讨论】:
以上是关于在同一个 CSV 文件中保存多个不同大小的列/变量的主要内容,如果未能解决你的问题,请参考以下文章