Pandas 处理 csv 数据类型问题
在大数据开发和测试的场景中我们需要将数据在不同的格式之间进行转换,笔者在转换的时候遇到了两个问题,通过摸索找到了解决方法,遂分享给大家。
数据准备
-
待处理的源
CSV文件test.csv -
目标 plain_text 文件
test.txt
原始文件内容如下:

修改前的代码
import pandas as pd
df = pd.read_csv("test.csv")
df.to_csv("test.txt", sep="\t", header=False, index=False)
输出结果

消失的 0
party_no 是字符串类型,预期是按照 0000000000001234567 写入到 test.txt 中去。但是,实际写入的时候发现 0 消失了。
丢失的精度
test_decimal1 字段是浮点数类型,预期保留 2 位小数;test_decimal2 预期是保留 9 位小数。但是实际写入的时候发现精度丢失,只保留了一位。
如何解决
实际上我们在调用 pandas.read_csv 通过参数 converters 来指定字段的类型,这样可以避免上述的两个问题。参考代码如下
import pandas as pd
from decimal import Decimal
data_converters = {
"party_no": str,
"timestamp": str,
"date": str,
"test_decimal1": Decimal,
"test_decimal2": Decimal,
}
df = pd.read_csv("test.csv", converters=data_converters)
df.to_csv("test.txt", sep="\t", header=False, index=False)
写入结果如下


本文介绍了在Pandas中处理CSV数据时遇到的类型问题,包括数值精度丢失和字符串消失,通过提供修改前后的代码示例,展示了问题所在,并提出了解决方案,即使用converters参数来指定字段的数据类型。

被折叠的 条评论
为什么被折叠?



