【问题标题】:how to store 2d array in pandas df and read it without it turning into strings如何在熊猫df中存储二维数组并在不变成字符串的情况下读取它
【发布时间】:2021-08-04 01:46:57
【问题描述】:

我有一个 df,其中一列是数组,其中每个单元格是 1*50 维度并且有 20 行。

import pandas as pd
df = pd.DataFrame(zip(list(range(0, 20, 1)), np.random.rand(20, 50)),
             columns=['id', 'array'])

此时,将数组列用于与其他数组的任何数组运算(加法、乘法、除法等)都没有问题。

但是,如果将 df 保存为 csv 并在另一个笔记本中读取(我没有在这里演示的好方法),则数组列中的每个单元格都会变成列表包装的字符串,并使用 ast literal_eval 或 to_numpy没用。

'[1.2 -2.3 2.1 ... 4.1]'

这里如何防止数组变成字符串?

【问题讨论】:

  • 答案是不要保存在csvcsv 是文本文件,它不关心数据结构。使用df.to_picklepd.read_pickle

标签: python arrays pandas


【解决方案1】:

对我来说,在 pandas.read_csv 中使用转换器是可行的。转换器得到一个 lambda 函数,它剥离每个字符串,并删除换行符。之后,我可以应用 np.fromstring 以空格作为分隔符。

pd.read_csv("file.csv",converters={"array":lambda x: np.fromstring(x.strip("][").replace("\n", ""), sep=" ")})

【讨论】:

    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2022-01-25
    • 2018-10-13
    • 2017-09-06
    • 2020-08-26
    相关资源
    最近更新 更多