如何对pandas中read.table的输出结果按日期列进行索引?
解决Pandas无法识别Day1-Day7为列索引的问题
这问题我之前也碰到过,核心原因是你用pd.read_table()读取数据时,没有正确匹配数据的分隔规则,导致第一行的Day1-Day7没被识别成列名,自然没法用loc按列索引。
问题分析
你的数据是用空格分隔的,但pd.read_table()默认的分隔符是制表符(\t),所以Pandas会把整行的Day1-Day7当成第一行数据的一部分,列名变成默认的0、1、2...这类数字索引,这就是你用loc索引失败的原因。
解决方案
修改读取代码,指定正确的分隔符和表头参数:
import pandas as pd # sep='\s+' 匹配任意数量的空格作为分隔符,header=0 指定第一行为列名 data = pd.read_table("data.txt", sep='\s+', header=0)
验证效果
执行以下代码确认列名是否正确识别:
print(data.columns) # 输出应该是:Index(['Day1', 'Day2', 'Day3', 'Day4', 'Day5', 'Day6', 'Day7'], dtype='object')
之后你就可以正常用loc索引列了,比如:
# 获取Day1列的所有数据 print(data.loc[:, 'Day1']) # 获取第0行到第2行的Day3和Day5列数据 print(data.loc[0:2, ['Day3', 'Day5']])
额外排查点
如果还是不行,检查你的data.txt文件第一行是否有多余的空格、换行符或者特殊字符,确保第一行确实是干净的列名(Day1 Day2 ... Day7)。
内容的提问来源于stack exchange,提问作者ezzeddin
相关产品推荐
相关产品推荐

