【问题标题】:Python code for removing column with pandas,os,glob changes values of entire table使用 pandas、os、glob 删除列的 Python 代码更改整个表的值
【发布时间】:2021-08-11 00:39:06
【问题描述】:

我有这段代码可以从 csv 文件中删除一列。它可以工作,但是当它保存时,它会为我在其他列中的一些值添加小数位(似乎是随机的)。例如,当我运行代码时,另一列中的值从原来的 1.815 变为 1.8159999999999998,或 1.783 变为 1.7830000000000001。我有办法防止这种情况发生吗?如果我只是删除列 [0],我不明白为什么它会更改其他列中的某些值。谢谢!

import pandas as pd
import os
import glob

def main():
    path = os.getcwd()
    csv_files = glob.glob(os.path.join(path, "*.csv"))
    for f in csv_files:
        df = pd.read_csv(f)
        first_column = df.columns[0]
        df = df.drop([first_column], axis=1)
        df.to_csv(f, index=False)
main()

【问题讨论】:

标签: python pandas csv operating-system glob


【解决方案1】:

这就是计算机的工作原理!它们不能准确地表示浮点数。

https://docs.python.org/3.9/tutorial/floatingpoint.html

您可以在使用 float_format 写回文件时再次舍入它们

df.to_csv(f, index=False, float_format="%.f3")

或使用"%.g3" 删除尾随零。

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2016-09-27
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 2022-06-19
    • 2020-08-18
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多