iam6000 发表于 2022-11-4 18:43:00

新手求救如何用关键字列表删除行

由于关键字数量很大,有几百个,建了一个关键字EXCEL关键字.xlsx。里面只有一列“关键字”
另一个EXCEL表格是数据表.xlsx,需要根据关键字列表删除对应的行。此表第一列是"关键字"

如下代码报错,求助各位。谢谢

import pandas as pd
import numpy as np

cs=pd.read_excel('关键字.xlsx',dtype=str)
cs=cs.set_index('关键字')

ds=pd.read_excel('数据表.xlsx',dtype={'关键字':str})
ds.drop(cs['关键字'])

运行报错
KeyError                                  Traceback (most recent call last)
KeyError: "['03100111', '03100112', '03100201', '03100202'] not found in axis"

该如何修改?
再次感谢

jackz007 发表于 2022-11-4 19:25:06

         没找到怎么删?应该确定已经找到,然后再删不行吗?
         或者,实在不行那就这样办
ds=pd.read_excel('数据表.xlsx',dtype={'关键字':str})
try:
    ds.drop(cs['关键字'])
except Exception as e:
    pass
. . . . . .

cjh4312@163.com 发表于 2022-11-4 19:43:23

本帖最后由 cjh4312@163.com 于 2022-11-4 19:49 编辑

你看看是不是因为你的关键字 并不是索引,drop是根据你的索引来删除的,所以找不到行了。
打开excel的时候,加上index_col=0,强制指定第一列为索引

iam6000 发表于 2022-11-4 20:04:52

cjh4312@163.com 发表于 2022-11-4 19:43
你看看是不是因为你的关键字 并不是索引,drop是根据你的索引来删除的,所以找不到行了。
打开excel的时候 ...

强制设置索引也不行,一样报错

iam6000 发表于 2022-11-4 20:06:40

本帖最后由 iam6000 于 2022-11-4 20:14 编辑

如果改成如下就能运行,但是我不需要这样啊,关键字太多只能放EXCEL里啊:
mport pandas as pd
import numpy as np

cs=pd.read_excel('关键字.xlsx',dtype=str)
cs=cs.set_index('关键字')

ds=pd.read_excel('数据表.xlsx',dtype={'关键字':str})
ds.drop(['03100111', '03100112', '03100201', '03100202'])
#ds.drop(cs['关键字'])   这个就报错。为啥呢

cjh4312@163.com 发表于 2022-11-4 20:28:38

iam6000 发表于 2022-11-4 20:06
如果改成如下就能运行,但是我不需要这样啊,关键字太多只能放EXCEL里啊:

你试试把第一个excel的关键字不要设置成索引

iam6000 发表于 2022-11-4 20:42:47

cjh4312@163.com 发表于 2022-11-4 20:28
你试试把第一个excel的关键字不要设置成索引

和关键字是不是索引没关系啦。报错的不是这个

cjh4312@163.com 发表于 2022-11-4 20:52:51

iam6000 发表于 2022-11-4 20:42
和关键字是不是索引没关系啦。报错的不是这个

‘关键字’这一列设置成索引,cs['关键字']这么写会有问题。

iam6000 发表于 2022-11-4 21:46:10

cjh4312@163.com 发表于 2022-11-4 20:52
‘关键字’这一列设置成索引,cs['关键字']这么写会有问题。

取消关键字就是最开始的错误:KeyError: "['03100111', '03100112', '03100201', '03100202'] not found in axis"
使用cs.values也报错。试好多种写法都过不去。

cjh4312@163.com 发表于 2022-11-4 22:03:17

iam6000 发表于 2022-11-4 21:46
取消关键字就是最开始的错误:KeyError: "['03100111', '03100112', '03100201', '03100202'] not found...

我测试了一下,就是把第一个索引去掉,第二个文件索引加上,就可以通过了

dd=pd.read_excel('e:\stock.xlsx')
df=pd.read_excel('e:\stock_list.xlsx',index_col=0)
df.drop(dd['ts_code'],inplace=True)

iam6000 发表于 2022-11-4 22:31:40

cjh4312@163.com 发表于 2022-11-4 22:03
我测试了一下,就是把第一个索引去掉,第二个文件索引加上,就可以通过了

dd=pd.read_excel('e:\sto ...

奇怪。我重新建一个新表就能通过。用导入的EXCEL表就报错。可能是导入的表格式有问题。
十分感谢帮我解决问题。

再次谢谢
页: [1]
查看完整版本: 新手求救如何用关键字列表删除行