Python 3.10中Pandas删除director和cast列遇KeyError问题求助
问题:Pandas删除列时出现KeyError错误
我有一个包含电影信息的CSV文件,想要删除其中的director和cast列,但Pandas提示KeyError错误。
源代码
import pandas as pd if __name__ == '__main__': df = pd.read_csv(r'titles.csv', sep='\t') info = df.info # print(df.head()) # print(df.tail()) # print('dftypes: ', df.dtypes) # null = df.isnull().sum(axis=1) # # print(null) # df2=df.drop(['director'],axis=1) print(df.columns) df.drop(labels='director', axis=1)
CSV文件列名
show_id, type, title, director, cast, country, date_added, release_year, rating, duration, listed_in, description
错误信息
KeyError: "['director'] not found in axis"
已尝试的写法
df.drop(labels=['director', 'cast'], axis=1) # or df.drop(columns=['director', 'cast'])
解决方案
问题出在CSV读取的分隔符设置错误:你指定了sep='\t'(制表符分隔),但实际CSV是用逗号分隔的。这导致Pandas把整行内容当成了单一列,自然找不到director、cast这些列名。
修正步骤:
- 修正CSV读取方式:去掉
sep='\t'参数(Pandas会自动识别逗号分隔的CSV),或者显式指定sep=',' - 正确删除列:
drop方法默认不会修改原DataFrame,要么将结果赋值给新变量,要么添加inplace=True参数直接修改原数据
修正后的代码示例
import pandas as pd if __name__ == '__main__': # 正确读取逗号分隔的CSV df = pd.read_csv(r'titles.csv') # 方式1:将处理后的数据赋值给新变量 df_cleaned = df.drop(columns=['director', 'cast']) print(df_cleaned.columns) # 方式2:直接修改原DataFrame(无需赋值) # df.drop(columns=['director', 'cast'], inplace=True) # print(df.columns)
内容的提问来源于stack exchange,提问作者vorbote
相关产品推荐
相关产品推荐

