【问题标题】:Save pandas dataframe with numpy arrays column使用 numpy 数组列保存 pandas 数据框
【发布时间】:2019-12-05 14:59:20
【问题描述】:

让我们考虑以下 pandas 数据框:

df = pd.DataFrame([[1,np.array([6,7])],[4,np.array([8,9])]], columns = {'A','B'})

B 列由两个 numpy 数组组成。

如果我们保存数据帧并再次加载它,numpy 数组将转换为字符串。

df.to_csv('test.csv', index = False)
df.read_csv('test.csv')

有什么简单的方法可以解决这个问题吗?这是加载的数据帧的输出。

【问题讨论】:

标签: python pandas numpy


【解决方案1】:

您可以改为腌制数据。

df.to_pickle('test.csv')
df = pd.read_pickle('test.csv')

这将确保格式保持不变。但是,它不是人类可读的

如果人类可读性是一个问题,我建议将其转换为 json 文件

df.to_json('abc.json')
df = pd.read_json('abc.json')

【讨论】:

  • 小心点。腌制自己用就好了。但它可能在 pandas 版本之间不兼容。
【解决方案2】:

使用以下函数来格式化每一行。

def formatting(string_numpy):
"""formatting : Conversion of String List to List

Args:
    string_numpy (str)
Returns:
    l (list): list of values
"""
list_values = string_numpy.split(", ")
list_values[0] = list_values[0][2:]
list_values[-1] = list_values[-1][:-2]
return list_values

然后使用下面的 apply 函数将其转换回 numpy 数组。

df[col] = df.col.apply(formatting)

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2013-11-03
    • 1970-01-01
    • 2019-07-04
    • 2017-05-12
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多