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

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