Python 将数据帧读取numpy数组列作为str
我有两个Python脚本,一个创建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
.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=',')