Ethan.cy
Ethan.cy

Reputation: 35

Pandas dataframe rename column

I splited a dataframe into two parts and changed their column names seperately. Here's what I got:

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]

And it turned out df2 has the columns start with 'ba' rather than 'b'. What happened?

Upvotes: 2

Views: 195

Answers (1)

jezrael
jezrael

Reputation: 863651

I cannot simulate your problem, for me working nice.

Alternative solution should be add_prefix instead 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

Upvotes: 1

Related Questions