如何删除具有特定条件的行? [复制]

Posted

技术标签:

【中文标题】如何删除具有特定条件的行? [复制]【英文标题】:How can I delete the row having specific contiditon? [duplicate] 【发布时间】:2021-04-01 22:41:49 【问题描述】:

我想从电影表中删除列 'revenue' = 0 或 'Budget' = 0 的行 所以我尝试了这段代码。

movies[(movies['revenue'] == 0) or (movies['Budget'] == 0)]

然后,我得到一个值错误

所以我也尝试了这段代码

columns = ['budget', 'revenue']
df = movies.replace(0, pd.np.nan).dropna(axis=0, how='any', subset = columns).fillna(0).astype(int)

我也收到了一个未来警告“pandas.np 模块已弃用,将在未来版本中从 pandas 中删除。直接导入 numpy。 另外,追溯的值错误

【问题讨论】:

【参考方案1】:

试试这个,并使用|按位运算符(表示or):

new = movies[(movies['revenue'] != 0) | (movies['budget'] != 0)]  

该代码将创建一个新的df,其中包含列中非 0 或预算中非 0 的行。

注意!= 表示不相等。有关运营商的更多信息,我发现这个链接很清楚:https://www.w3schools.com/python/python_operators.asp

【讨论】:

【参考方案2】:

您需要更改以下行 -

drop_idx = movies[(movies['revenue'] == 0) or (movies['Budget'] == 0)].index

drop_idx = movies[(movies['revenue'] == 0) | (movies['Budget'] == 0)].index

一旦你有了删除索引,你就可以使用drop 删除索引

movies = movies.drop(index=drop_idx)

【讨论】:

我试过了,但我得到了一个 KeyError: "['id' 'imdb_id' 'popularity' 'budget' 'revenue' 'original_title' 'cast'\n 'homepage' 'director' 'tagline' 'keywords' 'overview' 'runtime' 'genres'\n 'production_companies' 'release_date' 'vote_count' 'vote_average'\n 'release_year' 'budget_adj' 'revenue_adj' 'movies_count'] 在轴上找不到" 已更新答案以纠正此错误【参考方案3】:

你不能在那里使用or 运算符,你必须使用逻辑或| 符号:

movies = movies[(movies['revenue'] == 0) & (movies['Budget'] == 0)]

编辑:

如果要删除带有0 的行,请尝试使用~ 符号:

movies = movies[~(movies['revenue'] == 0) & ~(movies['Budget'] == 0)]

我使用 &,因为 OP 在 cmets 中说他需要 &

【讨论】:

但我仍然有收入 = 0 的行 @박인아 我编辑了我的答案,请查看 让我们continue this discussion in chat.

以上是关于如何删除具有特定条件的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何通过特定的 ID 号删除数据框中的行? [复制]

如何仅删除在 R 中具有所有 NA 的行? [复制]

如何删除excel中符合特定条件的所有行,以及随后的行

pandas如何删除指定行

MySQL:删除包含特定参数的行,并且比一天更早[关闭]