[英]Python3 changes function name <…>
我有一個熊貓df,其中一列列出了用於在df的該行中獲取結果的特定函數。
看來Python更改了功能的名稱。 如果它是功能列表的一部分。 因此,Python使用函數名稱“ strategy0”,並將其更改為不太有用的'<function strategy0 at 0x0000000009CCA488>'
如果它是函數列表的一部分)。
如何避免Python一起更改fct名稱或使用Reg。 防爆。 用正確的fct創建一個新的df列“ stratname”。 名字(改回來)?
這是我現在的外觀:
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
這是我希望的樣子:
Strategy Ticker ROI
0 strategy0 nflx 142.976946
1 strategy0 lnkd 61.710992
2 strategy0 hsp 8.589611
這樣,列信息可以直接用作新功能的輸入。
我的一個好朋友幫助我完成了以下代碼。 但是他不懂熊貓,所以我們有點掙扎。
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中返回函數名稱?
如果您喜歡地圖和列表,則可以使用另一種解決方案
strategies = list(map(lambda x: x.__name__, strategies))
顯然,它在Python3中接受f.__name__
但不f.func_name
f.func_name。
因此,我的功能列表應如下所示:
strategies = [strategy0.__name__, strategy1.__name__, strategy2.__name__, strategy3.__name__]
現在它可以工作了,我不需要使用RegEx。 唷!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.