2017-05-07 113 views
4

我有以下DF:为什么我不能重命名列?

  TAN.SK SHA.LO 
A         0.05  0.01 
S         0.04  0.44 
D         0.08     -0.18 

我想新的DF是这样的:

  TAN  SHA 
A         0.05  0.01 
S         0.04  0.44 
D         0.08     -0.18 

基本上从列名称中删除.SK.LO

这是我尝试过:

df.rename(columns=lambda x: x.split('.')[0]) 

df.columns=df.split('.')[0] 

第二种情况下完美的作品在df.index

+0

谢谢Psidom,我的错写错了 – ge00rge

回答

5

DataFrame.rename()不会改变的地方数据帧(每默认)的情况下,所以你必须把它分配回:

In [134]: df = df.rename(columns=lambda x: x.split('.')[0]) 

In [135]: df 
Out[135]: 
    TAN SHA 
A 0.05 0.01 
S 0.04 0.44 
D 0.08 -0.18 

In [139]: df.rename(columns=lambda x: x.split('.')[0], inplace=True) 

In [140]: df 
Out[140]: 
    TAN SHA 
A 0.05 0.01 
S 0.04 0.44 
D 0.08 -0.18 
+0

谢谢Max!这是问题 – ge00rge

+0

@ ge00rge,欢迎您 – MaxU

1

我认为更快,如果很多列,使用向量化解决方案str.split,然后选择:

第一个
print (df.columns.str.split('.')) 
Index([['TAN', 'SK'], ['SHA', 'LO']], dtype='object') 

df.columns = df.columns.str.split('.').str[0] 
print (df) 
    TAN SHA 
A 0.05 0.01 
S 0.04 0.44 
D 0.08 -0.18 
相关问题