如何正确读取包含Int64数组的DataFrame的CSV文件?
Int64类型数组的CSV读写问题解决
执行以下代码后,读取生成的CSV文件时,unique列数据会出现异常,如何正确读取该列数据?
import pandas as pd df = pd.DataFrame(data={'key': [1,1,2,2], 'val': [3,4,5,5]}) df['val'] = df['val'].astype('Int64') # 默认情况下read_csv无法正确读取Int64数组 df = df.groupby('key')['val'].agg(['unique']) display(df) df.to_csv('test') df = pd.read_csv('test', index_col=0) display(df)
感谢@hide1nbush的提示,已通过自定义转换器解决该问题,代码如下:
import ast import pandas as pd def convert_int64_array(array_string): return pd.array(ast.literal_eval(array_string.split("\n")[1]), dtype=pd.Int64Dtype()) df = pd.read_csv('test', index_col=0, converters={'unique': convert_int64_array})
更简便的方式是使用pickle格式存储DataFrame,这种格式在往返存储时无需担心索引、Int64类型等兼容性问题,能完整保留数据的结构和类型。
内容的提问来源于stack exchange,提问作者lzl124631x
相关产品推荐
相关产品推荐

