重命名Pandas数据框索引

2 投票
2 回答
40 浏览
提问于 2025-04-14 17:49

我正在用一个SQL语句填充一个数据框,这个语句给出的记录计数的索引值是从0开始的。我正在写一个与Snowflake表的比较,这个表我会导入到另一个数据框中。我想把每条记录的索引改成'SQL'加上当前的索引数字,而下一个数据框的索引则是'Snow'加上索引数字。当我有了这两个数据框后,我会把它们合并在一起,并重新设置索引,以便查看它们之间的差异。

SQL部分看起来是这样的:

import pyodbc as pyo

cnn_sql = (r'Driver={SQL Server};Server=dbserver;"Database=stuff;UID=Me;PWD=Password;')

cnn = pyo.connect(cnn_sql)

sql = 'Select * from table'

dfsql = pd.read_sql(sql, cnn)

print(dfsql)

cnn.close

结果是这样的:

     Column1   Column2
0    Green     apple
1    Red       orange

我希望看到的是:

        Column1   Column2
SQL0    Green     apple
SQL1    Red       orange

这样做可能吗,还是我方法不对?

我尝试过用 index.rename,但出现了错误。

2 个回答

2

你可以这样做:

df.index = "SQL" + df.index.astype(str)

print(df)

输出结果是:

     Column1 Column2
SQL0   Green   apple
SQL1     Red  orange
3

你可以使用rename来重命名:

out = dfsql.rename(lambda x: f'SQL{x}')

# variant
out = dfsql.rename('SQL{}'.format)

或者可以直接修改索引,把它转换成字符串,并加上SQL前缀:

dfsql.index = 'SQL'+dfsql.index.astype(str)

输出结果:

     Column1 Column2
SQL0   Green   apple
SQL1     Red  orange

撰写回答