2017-08-11 94 views
0

我最初看起來像這樣一個CSV文件:Python 3中,熊貓 - 刪除列,而不刪除頁眉

A, B, C, D, ExtraInfo 
something, 0.0, 0.0, 0.0 
something, 0.0, 0.0, 0.0 
something, 0.0, 0.0, 0.0 
something, 0.0, 0.0, 0.0 

我用熊貓修改標題ExtraInfo列。 現在我所有的CSV文件,看起來像這樣:

A, B, C, D, ExtraInfo 
something, 0.0, 0.0, 0.0, 
something, 0.0, 0.0, 0.0, 
something, 0.0, 0.0, 0.0, 
something, 0.0, 0.0, 0.0, 

如何擺脫這種額外comma

此外,爲了將來的參考,我如何修改標題,而不觸及其餘的信息....這是我第一次使用熊貓,所以嘗試了幾件事情,並有一種感覺,我應該堅持「改名」。

def modify_header_board(your_csv): 
    df = pd.read_csv(your_csv) 
    old_board = (df.columns[-1]) 
    new_board = (sort_board(old_board)) 
    df.columns.values[-1] = new_board <<<< I know this is redundant 
    df.rename(columns={old_board:new_board}, inplace=True) 
    df.to_csv(your_csv, index=False) 
+0

to_csv有一個line_terminator選項n,這只是一個換行符('\ n')。看起來你有5列,但只有4列數據。由於最後一列由空值組成,因此只會顯示爲尾隨逗號。 – Petergavinkin

回答

0

在數據幀使用

df.drop(colname, axis=1) 

刪除一列重命名報頭不接觸數據幀使用的其他元素

df.columns = ['ColName1', 'ColName2'] 
+0

df.drop(colname,axis = 1)這樣會使我的標題保持原樣? – lessharm

0

我解決了它使用CSV:

def csv_to_list(your_csv): 
    temp_list = [] 
    with open(your_csv) as csvfile: 
     reader = csv.reader(csvfile) 
     for row in reader: 
      temp_list.append(row) 
    return temp_list 

def list_to_csv(your_list): 
    with open(file, 'w', newline='') as csvfile: 
     spamwriter = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) 
     for item in your_list: 
      spamwriter.writerow(item) 

def remove_blanks_from_list(your_list): 
    new_list = [] 
    for item in your_list: 
     a = [] 
     for i in item: 
      if i != '': 
       a.append(i) 
     new_list.append(a) 
     return new_list 


z = csv_to_list(file) 
z = remove_blanks_from_list(z) 
list_to_csv(z)