通过从系列和数据框列名称的组合中提取来重命名一个数据帧的列

时间:2017-08-30 05:19:47

标签: pandas dataframe rename multiple-columns

在下面的行中,我将从三个系列(totalheldmw,totalcost和totalsellprofit)的列名称和一个数据框(totalheldprofit)重命名pnlsummary数据框的列。

我遇到的困难是迭代数据帧的列名。我手动分配了名称,如下所示。我想有一种迭代数据帧列名的有效方法。请指教。

pnlsummary.columns =
[totalheldmw.name[0],totalcost.name[0],totalsellprofit.name[0],
totalheldprofit.columns[0],totalheldprofit.columns[1],
totalheldprofit.columns[2],totalheldprofit.columns[3]]

1 个答案:

答案 0 :(得分:0)

我认为您需要按常量创建list,然后添加转换为list的列名:

pnlsummary.columns = [totalheldmw.name[0],totalcost.name[0],totalsellprofit.name[0]] +
                      totalheldprofit.columns[0:3].astype(str).tolist()

样品:

df = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')})

print (df)
   A  B  C  D  E  F
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b

df.columns = ['a','s','d'] + df.columns[0:3].tolist()
print (df)
   a  s  d  A  B  C
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b