【问题标题】:Python: how to keep leading zeros with dataframe.to_csv [duplicate]Python:如何使用 dataframe.to_csv 保持前导零 [重复]
【发布时间】:2018-04-12 04:05:53
【问题描述】:

在我从txt文件中读取数据后,有一个如下的数据框(df1):

 name   l1     l2
  a    00000  00000 
  b    00010  00002
  c    00000  01218

当我使用以下python代码时:

dataframe.to_csv('test.csv', index= False)

然后我用下面的代码读取:

  df = pd.read_csv('test.csv')

我发现数据框是 df2 如下

       name   l1      l2
        a      0       0
        b     10       2
        c      0      1218

但我想在 df1 等数据框中保留前导零。

谢谢!

【问题讨论】:

    标签: python-2.7 pandas csv dataframe


    【解决方案1】:

    删除前导零是因为 Pandas 隐式地将值转换为整数类型。您想将数据读取为字符串类型,可以通过指定dtype=str 来实现:

    pd.read_csv('test.csv', dtype=str)
    

    更新,因为它可以帮助他人:

    要将大多数或选择性列作为str,可以这样做:

    # lst of column names which needs to be string
    lst_str_cols = ['prefix', 'serial']
    # use dictionary comprehension to make dict of dtypes
    dict_dtypes = {x : 'str'  for x in lst_str_cols}
    # use dict on dtypes
    pd.read_csv('sample.csv', dtype=dict_dtypes)
    

    【讨论】:

    • 我怎样才能只读取一列作为字符串数据类型,而其余的列可以被 Pandas 自动识别?在我的例子中,只有客户 ID 列有前导零。
    • dtype 参数可以指定列名到dtype 的映射。详情请参阅read_csv documentation
    猜你喜欢
    • 2015-03-04
    • 2018-05-19
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2014-03-04
    相关资源
    最近更新 更多