我尝试使用Python,Xlwings库和Excel创建用户定义函数。
目标是使用一个函数,让我们调用ret_data_frames不仅可以填充A1单元格,还可以填充所有需要单元格来返回整个数据框。
如上图所示:
我使用的数据框是通过网页抓取获得的,并且尺寸较大,所以我让我们使用一个简单的数据框,如果这样做,我将这个想法替换为原始代码
import numpy as np
import pandas as pd
def get_data_frame(data):
dates = pd.date_range(data,periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
之后,创建UDF功能
是必要的import xlwings as xw
from test import get_data_frame
@xw.func
def ret_data_frame(data):
return get_data_frame(data)
这个想法不起作用,所以问题是:
是否可以使用UDF来重现数据帧?
由于
答案 0 :(得分:1)
你需要有正确的xlwings reutrn
@ xw.ret(index = False,header = True,expand ='table')
函数顶部的装饰
@xw.func
@xw.ret(index=False, header=True, expand='table')
def ret_data_frame(data):
return get_data_frame(data)
答案 1 :(得分:1)
这对我有用:
@xw.func
@xw.arg('x', pd.DataFrame, index=False, header=True)
@xw.ret(header=True)
def get_my_df(x):
return x
通过这种方法,您可以通过多种方式返回dataFrame
@xw.ret(header=True, index=True, expand='table')
您可以将dataFrame立即返回到Excel,而无需将其包装到Excel数组公式中。