2016-04-23 90 views
0

我使用的是熊貓庫數據添加到數據幀和我重命名在下面的代碼我的專欄:在Python SQL表重命名列

chunksize = 20000 
j = 0 
index_start = 1 

for df in pd.read_csv('C:/Users/xxx/Desktop/jjj.tsv', chunksize=chunksize, header = None,sep='\t', iterator=True, encoding='utf-8'): 
    df=df.rename(columns = {0:'screen',1:'user'}) 
    df.to_sql('data', disk_engine, if_exists='append') 
    index_start = df.index[-1] + 1 
    j=j+1 
    if j >=2: 
     break 
    else: 
     count = j*chunksize 
     print(count) 
     print(j) 

然而,當我執行一個簡單的查詢:

df = pd.read_sql_query('SELECT * FROM data LIMIT 3', disk_engine) 

我得到:

index 0 1 
0 0 293 3785616 
1 1 3250207 5540538 
2 2 1000052 5542982 

爲什麼我不列改名? df=df.rename(columns = {0:'screen',1:'user'})應該有改名的列嗎?

+0

重命名列後'df.columns.tolist()'的輸出是什麼? – MaxU

+0

我看到['screen','user']。出於某種原因,我沒有看到從查詢中得到的輸出。當我運行df = pd.read_sql_query('SELECT * FROM data WHERE screen = 293 LIMIT 3',disk_engine)時出現錯誤,說沒有找到屏幕。 – zorny

回答

1

您可以在通過指定names參數讀數CSV在飛行中重命名列:

pd.read_csv('C:/Users/xxx/Desktop/jjj.tsv', 
      chunksize=chunksize, 
      header = None, 
      sep='\t', 
      iterator=True, 
      encoding='utf-8', 
      names=['screen','user']) 

PS最有可能您已經創建SQL表第一次,而不是重新命名列 - 嘗試刪除和重新創建它