无法编写Python函数

时间:2018-12-23 22:26:27

标签: 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 = 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-如何区分weight_1和weight_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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这应该有效

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')