我有以下代码
import pandas as pd
df = pd.DataFrame(columns=['var1', 'var2','var3'])
df.loc[0] = [0,1,2]
def RS():
x = 123
y = 456
z = 'And some more random shit'
return x+y
def BS():
x = -890
y = (456*1)+90
z = 'And some more random shit'
return x-y
def MyCompute(srt, srt_string):
df[srt_string] = srt()
df['1min' + srt_string] = 1-df[srt_string]
MyCompute(srt=RS, srt_string='RS')
MyCompute(srt=BS, srt_string='BS')在调用MyCompute函数时,有没有避免双RS和双BS的方法?
发布于 2020-03-02 21:30:06
使用属性__name__:
def MyCompute(srt):
df[srt.__name__] = srt()
df['1min' + srt.__name__] = 1 - df[srt.__name__]
MyCompute(srt=RS)
MyCompute(srt=BS)发布于 2020-03-02 21:29:49
将您的函数放在字典中,然后您可以按名称查找该函数。
compute_dict = {"RS": RS, "BS": BS}
def MyCompute(srt_string):
srt = compute_dict[srt_string]
df[srt_string] = srt()
df['1min' + srt_string] = 1-df[srt_string]发布于 2020-03-02 21:29:00
是的,您可以使用函数的__name__属性,例如RS.__name__而不是'RS'
https://stackoverflow.com/questions/60496894
复制相似问题