3

私は必死に Pyxll を使用して、一連の配列を取得し、それらを Python にロードし、それらを pandas DataFrames に変換し、データを少し操作してから、最終的な DataFrame を返す Excel 関数を作成しようとしています。さて、DataFrame を返すためにpyxll の例を見つけましたが、どのように試しても、ロードした Excel 配列を使用できる pandas DataFrames に変換できないようです。

たとえば、以下のコードを使用してみましたが、うまくいきませんでした。Python に何がロードされ、どのように表示されるかを知る方法があれば、データの操作方法を理解できる可能性が高くなるかもしれませんが、Canopy 出力領域で出力を表示する方法がわかりません。

ファイルを保存したり、Pythonにロードしたり、データを処理したり、既存のファイルを上書きしたりすることなく、ExcelからPythonにデータをインポートし、処理してからExcelに戻す簡単な方法を知っている人はいますか?

@xl_func("string[] name, var[] day, string[] method, string[] currency, numpy_array amounts, date[] dates: dataframe")
def test(name, day, method, currency, amounts, dates):

df_name = DataFrame(name, columns = ['Name'])
    df_method = DataFrame(method, columns = ['Method']).ix[1:]
    df_currency = DataFrame(currency, columns = ['Currency']).ix[1:]


    df = df_name.join(df_method).join(df_currency)

    cols = ['Name', 'Currency', 'Method']
    df = df[cols]


return DataFrame(dates)
4

3 に答える 3

3

(私の)ライブラリxlwingsを見てください。DataFrame を次のように簡単に送受信できます。

>>> from xlwings import Workbook, Range
>>> import pandas as pd
>>> wb = Workbook()  # Pass in the path of a file to work with an existing Workbook
>>> df = pd.DataFrame([[1., 2.], [3., 4.]], columns=['one', 'two'])
>>> Range('A1', index=False).value = df # send it over to Excel
>>> data = Range('A1').table.value  # read it back
>>> pd.DataFrame(data[1:], columns=data[0])
   one  two
0    1    2
1    3    4

特にDataFramesに関するドキュメントとVBAから呼び出す方法を参照してください。

于 2014-09-25T23:00:37.217 に答える
2

で使用するxlrd(Python 2 および 3)、xlwt(Python 2 のみ)、およびxlsxwriter(Python 2 および 3) モジュールを確認してくださいpandas。Pandas のコードには、それらのためのフックがあります。read_excelおよびto_excel関数の詳細については、こちらを参照してください。

于 2014-09-25T21:58:42.617 に答える