python - 在熊猫中读取文件时自动转换为整数
问题描述
我有一个原始数据集为 .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()。
我错过了什么吗?
解决方案
您可以转换为 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
推荐阅读
- javascript - 用多行解析电子邮件正文
- passwords - 存储用户的 3rd 方应用程序密码的最佳做法是什么?
- javascript - 如何使用 Parcel Bundler 在函数内设置全局变量?
- python - 这是使用表单集更新现有数据的正确方法吗?
- c# - 使用 RedirectToAction 方法时视图内容不刷新
- amazon-web-services - 如何使用 CloudFormation 替换字符串变量中的字符
- angular - 如何在 Angular 中使用异步
- python - 尝试查找列表变量的索引时出错:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
- python - 传递参数 Python 的 Lambda 函数
- ios - 注销后找不到类型的 ObservableObject