首页 > 解决方案 > 在熊猫中读取文件时自动转换为整数

问题描述

我有一个原始数据集为 .txt 文件,如下所示

ID    SI_Number   
1     0010
2     0005

我正在使用 psycopg2 将这些数据推送到 postgresql。在数据库中,我看到以下内容

ID     SI_Number
1      10.0
2      5.0

为了摆脱不需要的小数位,我使用了以下代码。

df['SI_number'] = df['SI_number'].astype(str).str.replace(r'.0$','',regex=True)

有了这个在数据库中,我看到了

ID    SI_Number
1      10
2      5

但我想在数据库中填充确切的值。如下所示:

ID    SI_Number
1      0010
2      0005

我试过df['SI_Number'].astype(str)但没有结果。

我正在阅读带有以下内容的 .txt 文件

df = pd.read_csv(f,usecols=col_lst,sep='|',engine='python',encoding='iso-8859-1',error_bad_lines=False, warn_bad_lines=True)

我正在使用 Linux 操作系统。此外,在上传时,我将所有内容都转换为 VARCHAR()。

我错过了什么吗?

标签: pythonpandas

解决方案


您可以转换为 int -> string 然后应用zfill()(零填充)

>>> df = pd.DataFrame({"A": [1.0, 2.0, 30.0]})

>>> df
      A
0   1.0
1   2.0
2  30.0

>>> df["A"] = df["A"].astype(int).astype(str).apply(lambda x: x.zfill(4))

>>> df
      A
0  0001
1  0002
2  0030

推荐阅读