使用pandas drop()函数删除列失败:报错及无效果问题求助
我来帮你理清这两个问题的原因和解决办法:
第一个错误:ValueError: labels ['DATE'] not contained in axis
这个问题的核心是分隔符指定错误。pandas的read_csv()默认用逗号,作为字段分隔符,但你的数据文件是用制表符\t分隔的(从你后续添加sep='\t'就不再报错能验证这一点)。
当你没指定sep='\t'时,pandas会把整行内容当成单一列,根本识别不到名为DATE的列,所以抛出了这个找不到标签的错误。你后来添加sep='\t'的操作是完全正确的,这一步解决了列名识别的问题。
第二个问题:调用drop()后列未被删除
这是pandas新手常踩的小坑:drop()方法默认不会直接修改原DataFrame,而是返回一个删除指定列后的新DataFrame对象。如果你没有把这个新结果赋值给原变量,或者没开启原地修改,原数据集自然不会有任何变化。
你有两种可行的解决方式:
方式1:将删除后的结果重新赋值给原变量
dataset = read_csv('USrealGDPGrowthPred_Quarterly.txt', header=0, sep='\t') # 把drop返回的新DataFrame赋值给dataset dataset = dataset.drop('DATE', axis=1) print(dataset.head(5))
方式2:使用inplace=True参数原地修改原数据集
dataset = read_csv('USrealGDPGrowthPred_Quarterly.txt', header=0, sep='\t') # 设置inplace=True直接修改原dataset dataset.drop('DATE', axis=1, inplace=True) print(dataset.head(5))
两种方式都能帮你成功删除DATE列,你可以根据自己的习惯选择其中一种。
内容的提问来源于stack exchange,提问作者steady_progress
相关产品推荐
相关产品推荐

