亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

防止加載、連接和重新保存 CSV 文件時浮點值發生變化

防止加載、連接和重新保存 CSV 文件時浮點值發生變化

溫溫醬 2024-01-15 15:17:51
我嘗試添加多個 csv 文件。我已點擊以下鏈接。 如何在Python中合并200個csv文件import pandas as pdcombined_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.10641.681,54.896,32.99到49.108000000000004,55.738,30.10599999999999841.681000000000004,54.896,32.99如何防止這種情況發生?提前致謝
查看完整描述

3 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

事實上,就是按照你要求的去做。問題在于,您讀取浮點數,并且由于語言讀取浮點數的方式,它們會產生一些微小的變化。

在這種情況下,使用此代碼,它將滿足您的需要。

combined_csv.to_csv( "combined_csv.csv", index=False, float_format='%.3f')


查看完整回答
反對 回復 2024-01-15
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

使用之前答案的替代方案float_format:


import pandas as pd

from decimal import Decimal

from io import StringIO

import sys


data = '''\

a,b,c,d,e,f

49.108,55.738,30.106,41.681,54.896,32.99

94.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)


查看完整回答
反對 回復 2024-01-15
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您可以將 glob(一個用于處理文件的 Python 庫)與 pandas 結合使用,以更好地組織這些數據。glob 可以通過使用正則表達式匹配來獲取文件名來打開多個文件:


import glob


files = 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)


查看完整回答
反對 回復 2024-01-15
  • 3 回答
  • 0 關注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號