有沒有辦法讓自定義 C 函數作用于 pandas DF?例如,我知道我可以將 ac 函數包裝在 python 函數中,并在行明智迭代中使用它,但這似乎效率低下。我知道pandas是用c寫的。我想要一種簡單的方法來告訴 pandas“使用這個 c 函數”。這很天真,但是這樣的事情...cFunc = get_c_function_some_how()for i in range(1000): df = df.use_c_function(cFunc)use_df(df)...我的用例是,我一遍又一遍地進行一組簡單但計算成本較高的計算,并且我希望使該特定計算集顯著更快編輯:我想以某種方式將整個 Pandas Dataframe 傳遞給 C 函數就可以了,實際上迭代可能應該在 C 內部發生,所以如果需要使用一次 python 包裝的 c 函數,那么數據就被移交給C 用于計算,這似乎是一個非常好的解決方案。我個人找不到有關執行此類操作的文檔。
1 回答

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
有一種方法可以做到這一點,但我不會將其描述為“簡單”。
在內部,Pandas 使用 numpy 來存儲數據。如果您可以獲得 numpy 向量形式的數據,則可以將其傳遞給 C,并讓它對該向量進行操作。
從列中獲取 numpy 向量很容易:
vec?=?df["foo"].to_numpy()
接下來,您需要確保向量是連續的。你不能假設它是這樣,因為如果數據具有兼容的類型,pandas 會將來自多個列的數據存儲在同一個 numpy 數組中。
vec?=?np.ascontiguousarray(vec)
然后,您可以將 numpy 數組傳遞給 C。
添加回答
舉報
0/150
提交
取消