Pandas数据帧重命名列

时间:2018-05-13 06:53:37

标签: pandas

我将数据框分成两部分并单独更改了列名。这就是我得到的:

df1 = df[df['colname'==0]]
df2 = df[df['colname'==1]]
df1.columns = [ 'a'+ x for x in df1.columns]
df2.columns = [ 'b'+ x for x in df2.columns]

事实证明,df2的列开头是' ba'而不是' b。发生了什么事?

1 个答案:

答案 0 :(得分:1)

我无法模拟你的问题,因为我工作得很好。

替代解决方案应该是add_prefix而不是list comprehension

df = pd.DataFrame({'colname':[0,1,0,0,0,1],
                   '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)
   C  D  E  F  colname
0  7  1  5  a        0
1  8  3  3  a        1
2  9  5  6  a        0
3  4  7  9  b        0
4  2  1  2  b        0
5  3  0  4  b        1

df1 = df[df['colname']==0].add_prefix('a')
df2 = df[df['colname']==1].add_prefix('b')
print (df1)
   aC  aD  aE aF  acolname
0   7   1   5  a         0
2   9   5   6  a         0
3   4   7   9  b         0
4   2   1   2  b         0

print (df2)
   bC  bD  bE bF  bcolname
1   8   3   3  a         1
5   3   0   4  b         1