gpt4 book ai didi

python - Pandas 数据框将 numpy 数组列读取为字符串

转载 作者:行者123 更新时间:2023-12-01 01:13:20 25 4
gpt4 key购买 nike

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

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

df['matrix'] = df['matrix'].apply(lambda x: np.array(x))
df.to_csv("Matrices.csv", sep=",", index=False)

df['matrix'].iloc[0]的类型和形状是 <class 'numpy.ndarray'>(24, 60)分别。

在我尝试的第二个脚本中

print ("type of df['matrix'].iloc[0]", type(df['matrix'].iloc[0]))

输出为type of df['matrix'].iloc[0] <class 'str'>

我如何确保 df['matrix']不失去它的本质吗?

最佳答案

如果想保存和只读 numpy 数组,请使用 savetxtgenfromtxt .

<小时/>

如果有多个列,则使用:

使用pickle :

df.to_pickle('file.pkl')
df = pd.read_pickle('file.pkl')
<小时/>

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

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_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'>

关于python - Pandas 数据框将 numpy 数组列读取为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54614635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com