2017-05-07 164 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 
相關問題