如何从存储在.csv中的熊猫数据框中读取np矩阵?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从存储在.csv中的熊猫数据框中读取np矩阵?相关的知识,希望对你有一定的参考价值。

我试图从.csv中的另一个熊猫数据帧存储中读取一个np.matrix和一个熊猫数据帧

我已经尝试使用文字评估,但它不起作用。

Etapa=pd.read_csv(f"data/etapas.csv",encoding="latin_1")
from ast import literal_eval
Etapa.loc[:,"Etapa"]=Etapa.Etapa.map(literal_eval)
Etapa.loc[:,"MatrizTiempos"]=Etapa.MatrizTiempos.apply(literal_eval)
Etapa.loc[:,"DataFrameEscuelas"]=Etapa.DataFrameEscuelas.map(literal_eval)

出现的错误是这样的:

文件“”,第1行[[0。 0. 0. 0.]^SyntaxError:语法无效

答案

现在,您具有语法不正确的list的字符串表示形式:

from ast import literal_eval

x = '[[0. 0. 0.], [1. 1. 1.]]'
literal_eval(x)
  File "<unknown>", line 1
    [0. 0. 0.]
         ^
SyntaxError: invalid syntax

我假设存在小数,因为可能会有浮点数:

from ast import literal_eval

x = '[[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]'

literal_eval(''.join( # join back string fragments
    ', '.join(
        a.split(' ') # split on whitespace and join on commas
    ) for a in x.split(',')
))

[[0, 0, 0], [1, 1, 1], [1.3, 4.4, 5.5]]

将其转换为您的数据框实现:

import pandas as pd


def to_list(x):
    return literal_eval(''.join(', '.join(a.split(' ')) for a in x.split(',')))

mystr = '[[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]'

df = pd.DataFrame([0: x for i in range(5)])

df[0]
0    [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
1    [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
2    [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
3    [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
4    [[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]
Name: 0, dtype: object

# these are all string types
df[0][0]
'[[0. 0. 0.], [1. 1. 1.], [1.3 4.4 5.5]]'


df[1] = df[0].map(to_list)

# this is now a list type
df[1][0]
[[0.0, 0.0, 0.0], [1.0, 1.0, 1.0], [1.3, 4.4, 5.5]]

以上是关于如何从存储在.csv中的熊猫数据框中读取np矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

删除熊猫数据框中的未命名列[重复]

如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

如何(重新)命名熊猫数据框中的空列标题而不导出到csv

将谷歌存储桶中的所有 .csv 文件读取到一个大熊猫 df 中,然后以 .csv 格式保存到另一个桶中

如何更新python中熊猫数据框特定列中的所有行?

如何从熊猫数据框中的当前行中减去前一行并将其应用于每一行;不使用循环?