簡體   English   中英

Python3更改函數名稱<…>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM