如何使用for循环删除数据框中的行

时间:2019-07-08 18:45:10

标签: python pandas dataframe

所以我想根据条件删除一些行。

我尝试删除网站中说明的内容。

我的数据框如下:

jobs
   job_name  number
0  job1      163
1  job2      200
2  job3      3

我有一个列表:

my_jobs = [job2, job3]

我的状况:

for job in jobs['job_name']:
    if job not in my_jobs:
        jobs_df.drop(job, axis=0)     

我希望我的数据框看起来像这样:

jobs
   job_name  number
1  job2      200
2  job3      3

但是,我得到了:

  

keyerror:“未在轴上找到[['jo1']]”

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我认为错误的原因是它正在寻找仅具有[0,1,2]的数据帧索引中的job_name 您可以将列job_name设置为索引:

jobs_df.set_index("job_name", inplace=True)

然后执行:

my_jobs = ["job2", "job3"]
for job in jobs_df.index:
    if job not in my_jobs:
        jobs_df.drop(job, axis=0, inplace=True)
jobs_df.reset_index(inplace=True)

但是执行此操作的一种更简便快捷的方法是:

jobs_df = jobs_df[jobs_df["job_name"].isin(my_jobs)]