防止加载、连接和重新保存 CSV 文件时浮点值发生变化

我尝试添加多个 csv 文件。我已点击以下链接。 如何在Python中合并200个csv文件

import pandas as pd

combined_csv = pd.concat( [ pd.read_csv(f) for f in filenames ] )

combined_csv.to_csv( "combined_csv.csv", index=False )

但我的价值观从


49.108,55.738,30.106

41.681,54.896,32.99


49.108000000000004,55.738,30.105999999999998

41.681000000000004,54.896,32.99

如何防止这种情况发生?


提前致谢


温温酱
浏览 140回答 3
3回答

侃侃无极

事实上,就是按照你要求的去做。问题在于,您读取浮点数,并且由于语言读取浮点数的方式,它们会产生一些微小的变化。在这种情况下,使用此代码,它将满足您的需要。combined_csv.to_csv( "combined_csv.csv", index=False, float_format='%.3f')

慕田峪4524236

使用之前答案的替代方案float_format:import pandas as pdfrom decimal import Decimalfrom io import StringIOimport sysdata = '''\a,b,c,d,e,f49.108,55.738,30.106,41.681,54.896,32.9994.107,55.739,3.105,41.671,45.897,23.98'''f = StringIO(data)df = pd.read_csv(f)df.to_csv(sys.stdout, index=False)df = df.round(decimals=4)df.to_csv(sys.stdout, index=False)f.seek(0)converters = {k: Decimal for k in 'abcdef'}df = pd.read_csv(f, converters=converters)df.to_csv(sys.stdout, index=False)

守着一只汪

您可以将 glob(一个用于处理文件的 Python 库)与 pandas 结合使用,以更好地组织这些数据。glob 可以通过使用正则表达式匹配来获取文件名来打开多个文件:import globfiles = glob.glob("file*.csv")df_list = []for filename in files:  data = pd.read_csv(filename)  df_list.append(data)df = pd.concat(df_list)print(files)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python