[英]macro for pandas column setting in hy
我覺得我正在為以下按順序設置多個派生列的操作編寫不必要的函數:
(defn add-cols[d]
(do
(setv (get d "col0") "0")
(setv (get d "col1") (np.where (> 0 (get d "existing-col")) -1 1))
(setv (get d "col2") (* (get d "col1") (get d "existing-col")))
d
))
以上內容既不簡潔也不易於理解。 我很感激將此模式轉換為宏的任何幫助。 我是宏的初學者,但我正在考慮創建這樣的東西:
(pandas-addcols d
`col0 : "0",
`col1 : (np.where ( > 0 `existing-col) -1 1),
`col2 : (* `col1 `existing-col))
將不勝感激上述任何幫助或指導。 宏的最終形式顯然也可以不同。 最終,最重復的部分是多次“setv”和“get”調用,也許有更優雅的通用方法來刪除這些調用。
一個有用的語法糖是使用較短的名稱來get
並消除引用字符串文字的需要。 這是這個庫中$
的一個簡單版本。 此外,Hy 的setv
已經允許您提供多個目標值對。
(import
[numpy :as np]
[pandas :as pd])
(defmacro $ [obj key]
(import [hy [HyString]])
`(get (. ~obj loc) (, (slice None) ~(HyString key))))
(setv
d (pd.DataFrame (dict :a [-3 1 3] :b [4 5 6]))
($ d col0) 0
($ d col1) (np.where (> 0 ($ d a)) -1 1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.