如何初始化pandas DataFrame 将无列名首列设置为行索引
你需要将无列名的首列设置为DataFrame的行索引(index),而非普通数据列,实现方式如下:
手动初始化场景
你当前的数据源是嵌套列表,只需要拆分列表中每行的第一个元素作为索引参数传入,剩余元素作为数据内容即可:
import pandas as pd data = [['jordan','CA','m',100], ['lebron','NY','m',200]] # 提取行索引值 row_index = [item[0] for item in data] # 提取纯数据部分(去掉每行第一个元素) pure_data = [item[1:] for item in data] # 初始化时指定index参数,列名按需求设置 df = pd.DataFrame(pure_data, index=row_index, columns=['state', 'sex', 'salary'])
执行df.columns即可得到预期输出:Index(['state', 'sex', 'salary'], dtype='object')。
从文件/剪贴板读取场景
如果你的原始数据是从文本文件、剪贴板读取,可以直接用index_col=0参数指定第一列为行索引,无需手动拆分:
# 示例:从剪贴板读取你给出的原始表格 df = pd.read_clipboard(index_col=0)
你之前的写法问题在于把首列作为普通数据列处理,还传入了空字符串作为该列的列名,同时把最后一列的列名错写为Age,才会导致df.columns不符合预期。
内容的提问来源于stack exchange,提问作者Unknowntiou
相关产品推荐
相关产品推荐

