使用int列表删除数据帧行

2024-09-29 18:41:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧。它包含df['article_id']。我正在使用to_sql函数和sqlalchemy插入我的数据库。然而,有时我有重复的记录,我想删除之前插入

这是我的清单:

usedIDs = []
select_st = select([article_table])
res = conn.execute(select_st)
for _row in res:
    clean = int(_row[1])
    usedIDs.append(clean)

usedIDs

带输出:

[1202623831,
 1747352473,
 1748645480,
 1759957596,
 1811054956,
 1812183879,
 1816974229,
 2450784233,
 2579244390,
 2580336884]

我试过的:

df[~df.isin(usedIDs)]
df.drop(usedIDs, axis=0)

这是行不通的。 但是,当我像下面这样硬编码它时,它确实可以工作

df = df[~df.article_id.isin(['1202623831','1747352473'])]

错误为unhashableKeyError: not found in axis

如何从df['article_id']usedIDs列表中的数据帧中删除行


Tags: to数据incleaniddfsqlarticle
1条回答
网友
1楼 · 发布于 2024-09-29 18:41:53

仅在示例数据上使用“isin”就足够了:

df
    one date
0   1   2019-05-10 06:00:16
1   2   2019-05-10 06:30:21
2   3   2019-05-10 07:00:03
3   4   2019-05-10 06:32:43
4   5   2019-05-10 07:33:31
5   6   2019-05-10 07:37:39:09
6   7   2019-05-10 07:49:01
7   8   2019-05-10 08:52:05
8   9   2019-05-10 08:29:44:10

df = df[~df.one.isin([1,2])]

df
    one date
2   3   2019-05-10 07:00:03
3   4   2019-05-10 06:32:43
4   5   2019-05-10 07:33:31
5   6   2019-05-10 07:37:39:09
6   7   2019-05-10 07:49:01
7   8   2019-05-10 08:52:05
8   9   2019-05-10 08:29:44:10

这是因为您已将数据类型从int更改为string

df = df[~df.article_id.isin(['1202623831','1747352473'])]

尝试将userid转换为如下字符串:

userIDs = [str(userid) for userid in userIDs]

相关问题 更多 >

    热门问题