我在 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,但作为程序员,您可能知道更好的选择。