问题描述:
    在数据分析过程中发现当某一列的值为列表类型时,当存储成为csv时将自动将该列的列表存储成为对应的字符串,当重新进行读取时只能按照字符串进行处理。下面是一个真实的事例:
    首先直接创建一列数据类型为list,直接查看dataframe中存储的数据,发现还是正常的列表类型
| 12
 3
 4
 5
 6
 
 | >>> df = DataFrame(columns=['col1'])>>> df.append(Series([None]), ignore_index=True)
 >>> df['column1'][0] = [1, 2]
 >>> df
 col1
 0  [1, 2]
 
 | 
    然后将dataframe进行存储后进行读取,这里可以看到列表列已经变成了字符串类型:
| 12
 3
 4
 
 | >>> df.to_csv("XXX.csv")>>> df = pd.read_csv("XXX.csv")
 >>> df['column1'][0]
 '[1, 2]'
 
 | 
解决方案:
    1.存储时不再存储为csv,存储为pickle文件
| 12
 3
 4
 5
 6
 7
 
 | >>> import pickle>>> with open("data.pkl",'wb') as file:
 >>> 	pickle.dump(df,file)
 >>> with open('tmp.pkl', 'rb') as file:
 >>> 	new_df =pickle.load(file)
 >>> new_df['col1'][0]
 [1, 2]
 
 | 
    2.存储后将ast.literal_eval从str转化会list
| 12
 3
 
 | >>> from ast import literal_eval>>> literal_eval('[1.23, 2.34]')
 [1.23, 2.34]
 
 |