2016-03-03 89 views
0

這只是我編寫的DataFrame示例。我已經輸出了我想看到的。我想在這裏實現兩件事。如何熊貓重命名列名並預先記錄0?

  1. 替換句點.列名中的下劃線爲_。我可以 這個單獨但我想循環做這個,就像我們假設 有40-50列名。
  2. 檢查Car.Mile是否是記錄中的5位數字。如果沒有preprend 0的
 car.Model car.Color  car.Year car.Mile 
0  AUDI   RED  2015  14000 
1  BUIC   WHITE  2015  9000 
2  PORS   BLUE  2016  7000 
3  HONDA   BLACK  2015  100000 

輸出

car_Model car_Color  car_Year car_Mile 
0  AUDI   RED  2015  014000 
1  BUIC   WHITE  2015  009000 
2  PORS   BLUE  2016  007000 
3  HONDA   BLACK  2015  100000 

回答

2

可以使用str.replace更換.通過astype和最後applyzfill然後列car_Mile轉換爲字符串:

df.columns = df.columns.str.replace('.', '_') 
df['car_Mile'] = df['car_Mile'].astype(str).apply(lambda x: x.zfill(6)) 
print df 
    car_Model car_Color car_Year car_Mile 
0  AUDI  RED  2015 014000 
1  BUIC  WHITE  2015 009000 
2  PORS  BLUE  2016 007000 
3  HONDA  BLACK  2015 100000 

或者:

df.columns = df.columns.str.replace('.', '_') 
df['car_Mile'] = df['car_Mile'].astype(str).apply(lambda x: '{0:0>6}'.format(x)) 
print df 
    car_Model car_Color car_Year car_Mile 
0  AUDI  RED  2015 014000 
1  BUIC  WHITE  2015 009000 
2  PORS  BLUE  2016 007000 
3  HONDA  BLACK  2015 100000 

編輯:

謝謝Edchum改進 - apply是沒有必要的,最好是用str.zfill

df.columns = df.columns.str.replace('.', '_') 
df['car_Mile'] = df['car_Mile'].astype(str).str.zfill(6) 
print df 
    car_Model car_Color car_Year car_Mile 
0  AUDI  RED  2015 014000 
1  BUIC  WHITE  2015 009000 
2  PORS  BLUE  2016 007000 
3  HONDA  BLACK  2015 100000 
+0

你真棒!非常感謝。它像魅力一樣工作!過去幾天我一直在尋找!非常感謝你! – mtkilic

+0

我剛剛做到了。最後一個問題,如果你知道的話,如果不是很好。如果索引3缺少本田的car_Year記錄。我希望能夠提出錯誤並放棄這些條目。 – mtkilic

+0

請給我一點時間。 – jezrael