微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Pyxll将数组从Excel导入Python Pandas

我拼命想要使用Pyxll来编写一些excel函数获取一堆数组,在Python中加载它们,将它们转换为pandas DataFrames,稍微播放数据然后返回最终的DataFrame.
现在,为了返回DataFrame,我找到了pyxll examples,但无论我如何尝试,我似乎无法将我加载的excel数组转换为我可以使用的pandas DataFrames.

例如,我尝试使用下面的代码,但没有运气.也许如果我有一些方法可以知道Python中的加载方式以及它的外观,也许我有更好的机会了解如何操作数据,但我不知道如何查看Canopy输出区域的输出.

有没有人知道从excel导入数据到python的简单方法,处理它然后将其返回到excel,而不必保存文件,在python中加载它,处理数据并覆盖现有文件

@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)

解决方法:

看看(我的)库xlwings.它使得发送DataFrames变得如此简单:

>>> 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调用它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐