Dav*_*ang 1 python-3.x ipython-notebook jupyter jupyter-notebook ipywidgets
有没有办法interact(f)忽略其中的某些论点f?我相信我有一个用于传递数据框的默认参数的事实,对此感到困惑。这是我的功能:
def show_stats(start,end,df_pnl=df_pnl):
mask = df_pnl['Fulldate'] >= start & df_pnl['FullDate'] <= end
df_pnl = df_pnl[mask]
#do some more transformations here
display(df_pnl)
Run Code Online (Sandbox Code Playgroud)
这是我想要做的:
interact(show_stats,start=start_str,end=today_str)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
我假设它interact以某种方式更改df_pnl为字符串(因为它在交互输出中提供了列标题的下拉列表),但失败了,因为它随后尝试对df_pnl['Fulldate'].....字符串执行操作,从而导致显示错误。
我该如何解决?我可以从函数中排除该参数,同时使它继续在正确的数据帧上工作吗?交互中是否可以忽略函数中的某些参数?
谢谢
因此,在没有示例DataFrame的情况下测试该解决方案有点困难,但是我认为这functools.partial可能是您想要的。本质上partial,您可以使用预先加载的关键字参数或位置参数之一来定义新功能。尝试下面的代码,看看是否有效;
from functools import partial
def show_stats(start, end, df_pnl):
mask = df_pnl['Fulldate'] >= start & df_pnl['FullDate'] <= end
df_pnl = df_pnl[mask]
#do some more transformations here
display(df_pnl)
# Define the new partial function with df_pnl loaded.
show_stats_plus_df = partial(show_stats, df_pnl=YOUR_DATAFRAME)
interact(show_stats_plus_df, start=start_str, end=today_str)
Run Code Online (Sandbox Code Playgroud)
更新:
您也可以尝试使用ipywidgets fixed函数。
from ipywidgets import fixed
def show_stats(start, end, df_pnl):
mask = df_pnl['Fulldate'] >= start & df_pnl['FullDate'] <= end
df_pnl = df_pnl[mask]
#do some more transformations here
display(df_pnl)
interact(show_stats, start=start_str, end=today_str, df_pnl=fixed(df_pnl))
Run Code Online (Sandbox Code Playgroud)
如果这不能解决问题,请在下面发表评论。
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |