Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧读取numpy数组列作为str_Python_Pandas_Numpy - Fatal编程技术网

Python 将数据帧读取numpy数组列作为str

Python 将数据帧读取numpy数组列作为str,python,pandas,numpy,Python,Pandas,Numpy,我有两个Python脚本,一个创建.csv文件,另一个读取它 这是我在第一个文件中保存数据帧的方式: df['matrix'] = df['matrix'].apply(lambda x: np.array(x)) df.to_csv("Matrices.csv", sep=",", index=False) df['matrix'].iloc[0]的类型和形状分别是和(24,60) 在第二个脚本中,当我尝试 print ("type of df['matrix'].iloc[0]", typ

我有两个Python脚本,一个创建
.csv
文件,另一个读取它

这是我在第一个文件中保存数据帧的方式:

df['matrix'] = df['matrix'].apply(lambda x: np.array(x))
df.to_csv("Matrices.csv", sep=",", index=False)
df['matrix'].iloc[0]
的类型和形状分别是
(24,60)

在第二个脚本中,当我尝试

print ("type of df['matrix'].iloc[0]", type(df['matrix'].iloc[0]))
输出是df['matrix']的
类型。iloc[0]


如何确保
df['matrix']
不会失去其性质?

如果希望保存和只读numpy数组,请使用和


如果有多个列,则使用:

使用:


将数组转换为多列,然后写入文件:

a = np.array(
[[219,220,221],
 [154,152,14],
 [205,202,192]])

df = pd.DataFrame({'matrix':a.tolist(), 'b':np.arange(len(a))})
print (df)
            matrix  b
0  [219, 220, 221]  0
1   [154, 152, 14]  1
2  [205, 202, 192]  2

df1 = pd.DataFrame(df.pop('matrix').values.tolist(), index=df.index).add_prefix('mat_')
print (df1)
   mat_0  mat_1  mat_2
0    219    220    221
1    154    152     14
2    205    202    192

df = df.join(df1)
print (df)
   b  mat_0  mat_1  mat_2
0  0    219    220    221
1  1    154    152     14
2  2    205    202    192
但是如果确实需要将值转换为
数组
,则需要使用
ast.literal\u eval
进行转换器:

import ast

df.to_csv('testing.csv', index=False)

df = pd.read_csv('testing.csv', converters={'matrix':lambda x: np.array(ast.literal_eval(x))})
print (type(df.loc[0, 'matrix']))

<class 'numpy.ndarray'>
导入ast
df.to_csv('testing.csv',index=False)
df=pd.read\u csv('testing.csv',converters={'matrix':lambda x:np.array(ast.literal\u eval(x))})
打印(类型(df.loc[0,'矩阵']))

将数组直接保存到csv作为多列使用:

np.savetxt(r'C:\path\file.csv',a,delimiter=',')

如果您需要作为python对象读回,
ast.literal_eval()
是您的救世主,正如@jezrael所指出的那样

我最初使用的是
np.array(list(map(map(literal_eval,df['matrix'))
但是我的python解释器在处理完整的数据集时崩溃了。还有其他选择吗?我最初使用的是np.array(list(map(literal_eval,df['matrix'])),但我的Python解释器在处理完整数据集时崩溃了。还有其他选择吗?@yaminigoel-关于
df.to\u pickle(file)
df=pd.read\u pickle(file)
?我不知道
pickle
的功能。它可以与
.csv
配合使用吗?当我尝试
df.to_pickle(“matrix.csv”)
@yaminigoel时,我的脚本崩溃-错误是什么?由于
to_csv
总是丢失数据类型,因此所有数据总是转换为字符串。然后,
read\u csv
仅区分浮点和int列,另一列转换为字符串?它是如何渲染数组对象的?我猜它包括[],可能是由
str(df['matrix'][0]
生成的。
np.savetxt(r'C:\path\file.csv',a,delimiter=',')