【问题标题】:Changing Dtypes from int64 to string does not work将 Dtypes 从 int64 更改为 string 不起作用
【发布时间】:2020-10-05 06:05:44
【问题描述】:

我有一个这样的多列数据框

SE#    Name       Industry Code  Industry 
12345  Tom Jerry  923            Travel

SE# 为 int64,行业代码为 int64,其余为对象。

我用过

df.astype(str)

并且列 dtypes 更改为 objects,但是当我将文件保存为 csv 然后读回该文件时,数据类型重置为 int64。请告知如何确保数据类型保持为对象

最终目标是将 CSV 文件读入 SQL 数据库,当我这样做时,SE 列显示为 int。

谢谢!!

【问题讨论】:

  • python 不会读取 CSV 文件 - 我会将文件导入 SQL DB,因此 SE 列恢复为 int
  • 您正在读取数据的表的架构是什么?
  • 我不明白这与熊猫有什么关系。如果您将 csv 读入 SQL 数据库,则类型由表定义确定。如果要使用to_sql,可以使用dtype 参数指定类型。
  • 通常to_csv 不引用字符串。所以字符串"3" 会写成数字3。您可以使用 quoting 参数更改它。但这不会改变(默认)pd.read_csv 处理类似数字的字符串的方式。

标签: python pandas types


【解决方案1】:

您可以使用pickle格式来保存数据框 将数据框保存为泡菜使用

df.to_pickle('your_file_name.pkl')

并使用从文件中检索

pd.read_pickle('your_file_name.pkl')

【讨论】:

  • 数据写入CSV,然后读入数据库。数据库不知道pickle ...
【解决方案2】:

您可以像这样在读取 csv 文件时明确提及,

    df=pd.read_csv(  filename   ,  dtypes ={  'SE' : str  })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2013-01-06
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多