2012-07-23 26 views
4

我使用C/C++從傳統後端系統中提取海量數據,並使用distutils將其移至Python。在Python中獲取數據後,我將其放入一個pandas DataFrame對象中進行數據分析。現在我想要更快,並希望避免第二步。有沒有用於python熊貓的C/C++ API?

是否有一個C/C++ API用於熊貓在C/C++中創建DataFrame,添加我的C/C++數據並將其傳遞給Python?我正在考慮類似numpy C API的東西。

我已經習慣於在C中創建numpy數組對象作爲解決方法,但我大量使用時間序列數據,並且很想擁有TimeSeries和date_range對象。

回答

4

所有的熊貓類(TimeSeries,DataFrame,DatetimeIndex等)都有純Python定義,所以沒有C API。將C的numpy ndarray從你的Python代碼傳遞給Python代碼並讓你的Python代碼從它們中構建pandas對象是最好的。

如果需要,您可以使用PyObject_CallFunction等來調用熊貓構造函數,但是您必須注意從模塊導入訪問名稱並檢查錯誤。

+0

感謝ecatmur!我會給ndarrys一個嘗試... – THM 2012-07-23 16:23:51

4

我正在處理一個類似的問題,加載Pandas不支持的格式與C API的數據。我找到了兩種方法來解決這個問題,希望有人會發現它們有用。

  • 熊貓數據幀是純Python類,因此它們不容易從C/C++來構造,但各個列(see class Series source)的基礎數據存儲是numpy的一維數組。 Numpy有一個不錯的C API,你可以從C構造numpy數組,然後將它傳遞給你的Python代碼。

  • 第二種解決方案是爲熊貓編寫自己的輸入模塊。這不像聽起來那麼有效,可能效率很高。熊貓低級IO模塊編寫爲Cython(Python和C之間的某種特殊語言,編譯爲C),請參閱例如,parser.pyx。雖然這個特定的解析器是相當涉及的,你基本上只會調用你的遺留C代碼。