在Python SQL表中重命名列

时间:2016-04-23 21:43:20

标签: python pandas

我使用pandas库将数据附加到数据框,并在下面的代码中重命名我的列:

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'})重命名列?

2 个答案:

答案 0 :(得分: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表,而没有重命名你的列 - 尝试删除并重新创建它

答案 1 :(得分:0)

如果需要重命名列,最好的策略是使用 inplace 标志,

df.rename(columns = {0:'screen',1:'user'}, inplace=True)