Python3 changes function name <…>
我有一个pandas df,其中一列列出了一个特定的func,用于在df的那一行中得到结果。
似乎python更改了func的名称。如果它是函数列表的一部分。因此,python采用func名称"strategy0",并将其更改为不太有用的
我怎样才能避免python一起更改fct名称,或者使用reg。例如,用适当的fct创建一个新的df列"stratname"。姓名(改回)?
这是我现在看到的df:
1 2 3 4 | Strategy Ticker ROI 0 <function strategy0 at 0x0000000009CCA488> nflx 142.976946 1 <function strategy0 at 0x0000000009CCA488> lnkd 61.710992 2 <function strategy0 at 0x0000000009CCA488> hsp 8.589611 |
这就是我希望它看起来的样子:
1 2 3 4 | Strategy Ticker ROI 0 strategy0 nflx 142.976946 1 strategy0 lnkd 61.710992 2 strategy0 hsp 8.589611 |
这样,列信息就可以直接用作新函数的输入。
我的一个好朋友帮我写了下面的代码。但他在熊猫方面并不富裕,所以我们正在努力解决这个问题。
1 2 3 4 5 | def format(x): m = re.search(r'<function\s+(strategy\d+)\s+.*, x) return m.groups(1) df_max_res['stratname'] = df_max_res['Strategy'].applymap(format) |
这看起来很像我的问题,但显然python3处理这个问题的方式与p2不同。用python返回函数名?
另一个解决方案,如果你喜欢地图和列表
1 | strategies = list(map(lambda x: x.__name__, strategies)) |
显然,它在python3中接受
所以我的函数列表应该如下所示:
1 | strategies = [strategy0.__name__, strategy1.__name__, strategy2.__name__, strategy3.__name__] |
现在它工作了,我不需要使用regex。唷!