问题
在进行dataframe数据处理中,有时候会遇到其中某一列的元素均为列表,或者tensor的情况,形如:
import pandas as pd import numpy as np data_test = { "a":[[1,2],[3,4],[5,6]], "b":[4,5,6], "c":[7,8,9] } df_test = pd.DataFrame(data_test)
此时若将该data保存为csv格式
df_test.to_csv("./test.csv",index=None) #不保留行索引 df_read = pd.read_csv("./test.csv") type(df_read['a'][0]) >>> str
可以看到重新读取的data会将第一列原本为list的元素改为str类型,这为后续的处理带来了麻烦。
解决办法
我们首先将df格式的数据转换为numpy格式,然后进行储存。
np.save("./np_data.npy",df_test.values) #df.values相当于将dataframe转换为array,但是不保留列名和行索引 np_data = np.load('./np_data.npy',allow_pickle=True) df_read = pd.DataFrame(np_data) df_read.columns = ['a','b','c'] #重新附上列名 type(df_read['a'][0]) >>> list