Drop rows from dataframe based on date index gives "KeyError: "[''column_name'] not found in axis""

Drop rows from dataframe based on date index gives "KeyError: "[''column_name'] not found in axis""

我正在尝试创建一个新的数据框,排除包含两个日期的行,我的日期列是索引。

当我使用

DF2 = DF.drop(DF.loc['03/01/2018':'03/02/2018'])

我收到错误

KeyError: "['Column_name1' 'Column_name2'] not found in axis"

我已经尝试添加 axis = 0 来指定我想删除行,但仍然出现相同的错误

DF2 = DF.drop(DF.loc['03/01/2018':'03/02/2018'], axis = 0)

如果我尝试打印 'loc' 它 returns 预期的行

print(DF.loc['03/01/2018':'03/02/2018'])

因为你说你的日期是索引,所以当你使用 DF.loc['03/01/2018':'03/02/2018'] 时,你定位的是 03/01/201803/02/2018 之间的行。

pandas.DataFrame.drop 接受索引或列标签,默认接受索引标签。你应该使用

DF2 = DF.drop(['03/01/2018', '03/02/2018'])
# or
DF2 = DF[~DF.index.isin('03/01/2018', '03/02/2018')]

你的声明只需要 .index 在最后。要像这样进行切片,您需要 loc,但是 drop 需要 index 作为输入。

DF2 = DF.drop(DF.loc['03/01/2018':'03/02/2018'].index)

如果这不起作用,那么您应该检查索引的格式(需要是您尝试访问它的方式的字符串)

如果索引是 datetime.date 格式,你可以这样做:

DF2 = DF.drop(DF.loc[dateimte.date(2018,3,1):datetime.date(2018,3,2)].index)