鱼C论坛

 找回密码
 立即注册
查看: 3196|回复: 10

[已解决]新手求救如何用关键字列表删除行

[复制链接]
发表于 2022-11-4 18:43:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
由于关键字数量很大,有几百个,建了一个关键字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"

该如何修改?
再次感谢
最佳答案
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-4 19:25:06 | 显示全部楼层
         没找到怎么删?应该确定已经找到,然后再删不行吗?
         或者,实在不行那就这样办
ds=pd.read_excel('数据表.xlsx',dtype={'关键字':str})
try:
    ds.drop(cs['关键字'])
except Exception as e:
    pass
. . . . . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 19:43:23 | 显示全部楼层
本帖最后由 cjh4312@163.com 于 2022-11-4 19:49 编辑

你看看是不是因为你的关键字 并不是索引,drop是根据你的索引来删除的,所以找不到行了。
打开excel的时候,加上index_col=0,强制指定第一列为索引
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

强制设置索引也不行,一样报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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['关键字'])   这个就报错。为啥呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你试试把第一个excel的关键字不要设置成索引
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-4 20:42:47 | 显示全部楼层
cjh4312@163.com 发表于 2022-11-4 20:28
你试试把第一个excel的关键字不要设置成索引

和关键字是不是索引没关系啦。报错的不是这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-4 20:52:51 | 显示全部楼层
iam6000 发表于 2022-11-4 20:42
和关键字是不是索引没关系啦。报错的不是这个

‘关键字’这一列设置成索引,cs['关键字']这么写会有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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也报错。试好多种写法都过不去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

再次谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 19:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表