我有一个 for 循环,它以迭代方式向 Pandas 数据框添加列。我还希望根据列表命名这些新列。我现在有一个复杂的方法,有没有更优雅的方法来做到这一点?
分配新列时,您必须指定列名。然而,由于某种原因,这不能是可变的。所以我使用了一个虚拟的,然后根据我之前定义的列表更改了列名。不过,这似乎不太优雅。
数据帧列应该是 [wavelength, layers[0]_n, layers[0]_k, ... layers[ z ]_n, layers[ z ]_k]
layers = ['Ag', 'SiO2', 'Au']
colnames = ['wavelength']
for l in layers:
colnames.append(l+'_n')
colnames.append(l+'_k')
n = pd.read_csv('matdata\\' + layers[0] + '.csv')
n = n.iloc[:,0] #get only wavelength
for l in layers:
data = pd.read_csv('matdata\\' + l + '.csv') #read appropriate file
n = n.assign(a = data.iloc[:,1].values)
n = n.assign(b = data.iloc[:,2].values)
n.columns = colnames
开心每一天1111
相关分类