You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在调用pd.DataFrame()时直接设置索引,无需后续调用set_index?

问题:能否直接通过pd.DataFrame()参数设置索引,无需后续调用set_index?

现有代码通过先创建DataFrame,再调用set_index()方法将'id'列设为索引,具体代码如下:

import pandas as pd
data = [["aa", 1, 2], ["bb", 3, 4]]
df = pd.DataFrame(data, columns=['id', 'a', 'b'])
df = df.set_index('id')
print(df)

"""
    a  b
id      
aa  1  2
bb  3  4
"""

请问能否直接在调用pd.DataFrame(...)时传入参数完成索引设置,省去后续的set_index步骤?


当然可以,只需调整数据传入的方式,直接在创建DataFrame时通过index参数指定索引即可:

  • 把原数据中作为索引的'id'列单独提取出来,传给index参数
  • 剩下的数值部分作为data参数传入
  • 同时指定columns为['a', 'b']

修改后的代码如下:

import pandas as pd
data = [[1, 2], [3, 4]]
df = pd.DataFrame(data, index=['aa', 'bb'], columns=['a', 'b'])
print(df)

运行后输出和原代码完全一致:

a  b
aa  1  2
bb  3  4

如果不想拆分原数据列表,也可以通过列表推导提取索引和数据部分,直接传入参数:

import pandas as pd
data = [["aa", 1, 2], ["bb", 3, 4]]
df = pd.DataFrame([row[1:] for row in data], 
                  index=[row[0] for row in data], 
                  columns=['a', 'b'])
print(df)

这样也能得到相同结果,无需额外调用set_index。


内容的提问来源于stack exchange,提问作者Basj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:50:30