我想编写并稍后在Python中读取数据框。
df_final.to_csv(self.get_local_file_path(hash,dataset_name), sep='\t', encoding='utf8')
...
df_final = pd.read_table(self.get_local_file_path(hash,dataset_name), encoding='utf8',index_col=[0,1])
但后来我得到了:
sys:1:DtypeWarning:列(7,17,28)具有混合类型。指定dtype 导入选项或设置low_memory = False。
我发现了question。在底线中说我应该在读取文件时指定字段类型,因为" low_memory"不推荐使用......我觉得它效率很低。
是不是有一种简单的写作方式&后来读了一个Dataframe?我并不关心文件的人类可读性。
答案 0 :(得分:1)
您可以挑选数据框:
df_final.to_pickle(self.get_local_file_path(hash,dataset_name))
稍后阅读:
df_final = pd.read_pickle(self.get_local_file_path(hash,dataset_name))
如果您的数据框架很大并且速度变慢,那么使用HDF5格式可能会更加幸运:
df_final.to_hdf(self.get_local_file_path(hash,dataset_name))
稍后阅读:
df_final = pd.read_hdf(self.get_local_file_path(hash,dataset_name))
您可能需要先安装PyTables。
两种方式都存储数据及其类型。因此,这应该可以解决您的问题。
答案 1 :(得分:0)
警告是因为Pandas在您的列中检测到了冲突的数据值。如果愿意,可以在DataFrame构造函数中指定数据类型。
,dtype={'FIELD':int,'FIELD2':str}
等