Python 3.x 无法编写Python函数

Python 3.x 无法编写Python函数,python-3.x,Python 3.x,亲爱的 我想为以下代码编写一个函数,但我无法编写 path = 'C:/Users/user/Desktop/' a = pd.read_csv(path+'benchmark1.csv') b = a.loc[:,['RIC','Weight']] b['RIC'] = b.RIC.str.replace('.SE','').astype(int) Bench_1 = b.rename(columns={'RIC':'Ticker','Weight':'Weight_1'}) Data1 =

亲爱的

我想为以下代码编写一个函数,但我无法编写

path = 'C:/Users/user/Desktop/'
a = pd.read_csv(path+'benchmark1.csv')
b = a.loc[:,['RIC','Weight']]
b['RIC'] = b.RIC.str.replace('.SE','').astype(int)
Bench_1 = b.rename(columns={'RIC':'Ticker','Weight':'Weight_1'})
Data1 = pd.merge(Data,Bench_1, on= 'Ticker', how= 'left')
Data1 = Data1.fillna(0)
Data1['Weight_1'] = round(Data1.Weight_1*100,2)

c = pd.read_csv(path+'benchmark2.csv')
d = c.loc[:,['RIC','Weight']]
d['RIC'] = d.RIC.str.replace('.SE','').astype(int)
Bench_2 = d.rename(columns={'RIC':'Ticker','Weight':'Weight_2'})
Data2 = pd.merge(Data1,Bench_2, on= 'Ticker', how= 'left')
Data2 = Data2.fillna(0)
Data2['Weight_2'] = round(Data2.Weight_2*100,2)
我试着写一个下面的函数,但我遇到了两个问题:1-如何将多个基准放在测试台上。2-如何分离重量_1和重量_2

def data_sort(bench):
    a = pd.read_csv(path+'bench.csv')
    b = a.loc[:,['RIC','Weight']]
    b['RIC'] = b.RIC.str.replace('.SE','').astype(int)
    Bench_1 = b.rename(columns={'RIC':'Ticker','Weight':'Weight_1'})
    Data1 = pd.merge(Data,Bench_1, on= 'Ticker', how= 'left')
    Data1 = Data1.fillna(0)
    Data1['Weight_1'] = round(Data1.Weight_1*100,2)

    return Data1
感谢您的帮助。

这应该行得通

def data_sort(benchmark,Data,label):
    a = pd.read_csv(path+benchmark)
    b = a.loc[:,['RIC','Weight']]
    b['RIC'] = b.RIC.str.replace('.SE','').astype(int)
    bench = b.rename(columns={'RIC':'Ticker','Weight':label})
    Data1 = pd.merge(Data,bench, on= 'Ticker', how= 'left')
    Data1 = Data1.fillna(0)
    Data1[label] = round(getattr(Data1, label)*100,2)
    return Data1
Data1=data_sort('benchmark1.csv',Data,'Weight_1')
Data2=data_sort('benchmark2.csv',Data1,'Weight_2')

非常感谢你。我运行了代码,但它显示了以下错误:return Data1[label]=round(Data1.Weight_1*100,2)无效的syntaxHi Afreen,我进行了编辑以修复该错误。请注意,由于您没有提供具有预期输出的最小可验证代码。很难提供准确的帮助,因为我无法在我的机器上运行此代码。嗨,你能给我你的电子邮件吗。如果你不介意的话,我会把我的完整代码发给你,它工作得很完美,现在我正在改变基金的确切权重,比如权重ABC,并考虑从Data1[label]=round(Data1.Weight_1*100,2)改为Data1[label]=round(Data1.label*100,2)哦,是的,应该是这样的,我会编辑答案