当每列的数字大小不同时,如何保留 Dataframe 多列的所有尾随零?

How to keep all trailing zeros of multiple columns of a Dataframe when each column has a different size of numbers?

重要的初始信息:这些值是 ID 的,它们不是计算结果,所以我真的没有办法改变它们在文件中的保存方式。

数据框示例:

datetime match_name match_id runner_name runner_id ...
2022/01/01 10:10 City v Real Madrid 1.199632310 City 122.23450 ...
2021/01/01 01:01 Celtic v Rangers 1.23410 Rangers 101.870 ...

但是Dataframe中的match_id出现了:

1.19963231
1.2341

并且Dataframe中的runner_id出现:

122.2345
101.87

我尝试将所有值作为字符串传递,这样它会将数字视为字符串而不删除零:

df = pd.read_csv(filial)
df = df.astype(str)

但是没有用,他一直把右边的零去掉

我知道 float_format 的存在,但在这种情况下,有必要指定要使用的小数位数,所以我无法使用它,因为它们是 ID,所以我不能接受非常大的值被四舍五入的风险。

注意:有数百个不同的列。

当您的数据被读取时,零已经被删除,因此您转换为 str 不再有帮助。

您需要将选项直接传递给read_csv():

df = pd.read_csv(filial, dtype={'runner_id': str})

如果你有很多这样的列,你可以设置 dtype=str(而不是字典),但是 all 你的列将是 str ,所以你需要 re-parse 每个有趣的作为它们正确的数据类型(例如 datetime)。

更多详情见the docs;也许也可以玩 converters 参数。