能否在调用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
相关产品推荐
相关产品推荐

