亲爱的
我想为以下代码编写一个函数,但是我无法编写。
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
感谢您的帮助。
答案 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')