我有一个for循环,它迭代地向数据帧添加列。我还希望根据一个列表来命名这些新列。我现在有一个复杂的方法,有没有更优雅的方法呢?你知道吗
指定新列时,必须指定列名。但是,由于某些原因,这不能是可变的。因此,我使用了一个伪值,然后根据我之前定义的列表更改列名。不过,这看起来并不太优雅。你知道吗
数据帧列应该是[波长,层[0]\n,层[0]\k。。。层[z]\n,层[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
因为我没有权限访问你的CSV等等,我正在创建一些假数据来模拟这个过程。。。你知道吗
让我们从几个数据帧开始:
收益率:
使用这种技术,而不是使用
.assign()
允许在创建每个列时使用变量名来创建列标题。你知道吗相关问题 更多 >
编程相关推荐