python - Python 保存 CSV 而不将 ID 更改为整数

我在 Python 中有一个带有 ID 列的 df - 这些 ID 可以是数字和字母的混合,也可以是单独的数字。例如:

ID
00028D9D1
00027B98F
000275457

当我使用 pandas to_csv 保存这个 df 时,当我与他人共享(或打开自己)时,我在生成的 csv 文件中看到,我看到包含字母的 ID 保持原样/视为文本,但仅是数字的 ID 被视为整数,并自动以这种方式格式化。例如,保存后我会在我的 csv 文件中看到:

ID
00028D9D1
00027B98F
275457

有什么方法可以禁用这种对整数的自动处理,从而导致不同的格式?本专栏的 dtype 确实说它是一个 object,所以我假设它会以相同的格式保存所有 values。

回答1

根据 https://datatracker.ietf.org/doc/html/rfc4180,CSV 文件不包含任何类型信息,因此正确解释文件内容是应用程序的全部责任。从我在你的问题中读到的,

我在 Python 中有一个带有 ID 列的 df - 这些 ID 可以是数字和字母的组合,也可以是数字。

就我解释你的规范而言,你会有这样的东西:

输入。csv

ID
00028D9D1
00027B98F
000275457

脚本

import pandas as pd

df = pd.read_csv('input.csv')
print(df)
print(df['ID'].dtype)
df.to_csv('output.csv', index=False)

控制台输出

ID
0  00028D9D1
1  00027B98F
2  000275457
object

输出。csv

ID
00028D9D1
00027B98F
000275457

换句话说,使用正确的工具“打开”您创建的 CSV 文件。

正如我在 Windows 上观察到的,Excel 或 Open/Libre office 等电子表格应用程序使用 .csv 文件扩展名注册自身,因此仅打开 CSV 将导致对数据的非常通用的解释:可以转换为数字的单元格没有错误的被视为整数单元格,无论它们的列如何。

例如,一个可以让您查看文本文件实际内容的应用程序是 https://en.wikipedia.org/wiki/Windows_Notepad,但作为程序员,您可能知道更好的选择。

相似文章

r - 在 R 中加载 csv 数据框时添加列

我们正在Airbnb内部为我们的大学开展一个项目。我们加载了许多不同城市的列表,并希望将所有数据加载到一个相互绑定的数据框中。但是,我们解决了这个问题。现在我们需要为每个数据集添加一个列,说明它属于哪...