在熊貓中,許多函數都帶有一長串可選參數,每個參數都有一個默認參數。在熊貓函數調用中更改默認參數
如果我想在整個項目中重新定義一個默認值,或者至少在整個py文件中有一個簡單的方法來做到這一點?
例如read_csv()
默認爲encoding=None
,但我希望每個呼叫read_csv()
默認爲UTF-8
編碼。
我承認我可以包裝這個功能,但是這個感覺很難看,因爲有一個熊貓電話通過單獨的自定義導入。再加上其他開發人員無疑會回到使用read_csv()
。
我知道我可以編輯熊貓源代碼,但在維護兼容性方面這是一個非常糟糕的主意。
最後,顯然我可以更新每個read_csv()
調用來單獨設置編碼,但是我正在處理的項目中有很多這樣的調用,並且由於其他可能性可選的非定位參數。這也不利於未來的開發人員重複相同的問題。
任何想法?
編輯:
MedAli的回答運作良好,在文件範圍內。
我堅持好一會纔在目錄範圍內的工作(我使用Python 2.7):
我相信,如果大熊貓在標準庫這將是很容易忽視本地從標準庫中導入的事情,當文件: from __future__ import absolute_import
而且這個模模糊糊的看黑客無法正常工作或:
import sys
syspath = sys.path
new_syspath = [path for path in sys.path if path.strip('.')]
sys.path = new_syspath
import pandas
sys.path = syspath
我理解MES用sys.path唱歌是一個壞主意,雖然因爲我實際上試圖通過設計來完全踐踏大熊貓,但至少有一些通常的擔憂並不適用。
根據下面的註釋加上 - 作爲一個測試用例之前,使數百個搜索/替換我認爲這是有效的找到一種方法來掩蓋圖書館而無需更改代碼...如果它的工作,然後採用一個較少hacky的解決方案。
它開始看起來不可行,即使使用黑客,任何人都可以證明我錯了嗎?
2日編輯:
我相當肯定你不能做什麼,我問了一下在第一編輯,所以我接受了文件範圍的答案,你可以在Python中做到最好。
在進行測試運行方面,我認爲最簡單的做法是在應用文件範圍級別修正之前臨時更改panadas中的parsers.py。
如果有人認爲不然,我仍然感興趣!
沒有防呆的方法無法解決。我只是定義了你自己的包裝器,並且讓它知道它將'encoding'參數默認設置爲'utf-8',並將其保留。 – EdChum