pandas 根据日期索引从 Dataframe 中删除行会导致“KeyError:“在轴”“中找不到[”“列名称”]”

qeeaahzv  于 2023-02-14  发布在  其他
关注(0)|答案(3)|浏览(136)

我试图创建一个新的 Dataframe ,排除包含两个日期的行,我的日期列是索引。
当我使用

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',它将按预期返回行

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

vsnjm48y1#

您的语句只需要在末尾使用.index。要像这样进行切片,您需要loc,但是drop需要index作为输入。

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

如果这不起作用,那么你应该检查索引的格式(需要是字符串的方式,你试图访问它)
如果index是datetime.date,你可以这样做:

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

aydmsdu92#

由于您说您的日期是索引,所以当您使用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')]
bxgwgixi

bxgwgixi3#

我在使用drop函数时也遇到了类似的错误(没有loc)

data.drop('column_name')

而且它给了我一个类似的索引错误。我在添加.index后仍然有这个错误,但是这个kwarg修复了它。

data.drop(columns='column_name')

相关问题