在Python中编写和读取Dataframe到文件的正确方法

时间:2017-08-21 06:21:35

标签: python file pandas dataframe

我想编写并稍后在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?我并不关心文件的人类可读性。

2 个答案:

答案 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}