当每列的数字大小不同时,如何保留 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
参数。
重要的初始信息:这些值是 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
参数。