我正在使用 astype() 将列的 int 数据类型更改为 str 数据类型,并使用 to_csv() 将其保存到 csv 文件。但是通过 read_csv() 读取相同的 csv 文件表示数据类型仅为 int。我不想在读取文件时使用 dtype=str。 以下是以下信息:
>>df.info()
dtypes: int64(1), object(1)
>>df = df.astype(str)
>>df.info()
dtypes: object(2)
>>df.to_csv('answer.csv', index=False, encoding='utf-8')
>>df = pd.read_csv('answer.csv')
>>df.info()
dtypes: int64(1), object(1)
有什么方法可以在保存 csv 文件时仅使用更改后的数据类型而不是原始数据类型来保存列的数据类型。
如果 csv 是唯一选项,您可以通过创建 data_map csv 文件来满足要求。
当导出dataframe到csv时,你可以创建另一个csv,它存储列类型信息。
导入csv到dataframe时,可以读取data_map csv,提前转换成字典。使用它显式加载特定数据类型的 csv 数据。 dtype 参数可以提供这样的功能。
dtype : 列的类型名称或字典 -> 类型,默认无 数据或列的数据类型。例如。 {'a': np.float64, 'b': np.int32}(不支持 engine='python')。将 str 或 object 与合适的 na_values 设置一起使用以保留而不解释 dtype。
0.20.0 版本的新功能:支持 Python 解析器。 在这里输入链接描述
将 pandas 导入为 pd
df = pd.DataFrame({'日期': [pd.Timestamp('2022-01-01'), pd.Timestamp('2022-01-02')]})
dtypes = {'日期':'datetime64'}
df.to_csv('my_file.csv', index=False, dtype=dtypes)
将 pandas 导入为 pd
df = pd.DataFrame({'column1': [1, 2, 3], 'column2': ['A', 'B', 'C']})
df['column1'] = df['column1'].astype('int32')
df.to_csv('output.csv', index=False, dtype={'column1': 'int32'})
df.to_csv('answer.csv', index=False, index_label = True, encoding='utf-8')
你可以使用
index_label = True