根据列值删除Python Pandas中的DataFrame行[重复]

Posted

技术标签:

【中文标题】根据列值删除Python Pandas中的DataFrame行[重复]【英文标题】:Deleting DataFrame row in Python Pandas based on column values [duplicate] 【发布时间】:2016-05-05 05:28:55 【问题描述】:

我有一个数据集,我想根据该行的 2 或列值从数据框中删除行。 例如 - 我有关于美国所有电视节目的数据框,我需要根据电视节目的季节和剧集删除电视节目的特定行。 就像我需要删除 TV SHow-Gotham 的行,但只删除包含第 4 季和第 10 集的行。

如果我能得到这方面的帮助,我将不胜感激。

【问题讨论】:

这并不是那个问题的真正重复。该问题询问有关单列值的条件。此问题询问涉及多列的条件。 【参考方案1】:

您只需要一个布尔系列来索引数据框。比如:

conditions = np.logical_and(
     df.col1 == "Gotham",
     df.col2 == 4)

# or, if you need more than two columns in your condition do this:
conditions = np.all(np.array(
    [df.col1 == "Gotham",
     df.col2 == 4,
     df.col3 == 10]), axis=0)

df = df[~conditions]

解决下面的后续问题,我们有

conditions = np.logical_and(
     df.name == "Gotham",
     df.year == 2011)

df["model_ind"][conditions] = 1

【讨论】:

感谢 Bob 的回复,非常感谢,代码运行良好, 没问题!随意接受答案。 我遇到了另一个问题,在这个问题中,我想将名为 - 'model_ind' 的列的值替换为 1 ,如果节目的名称是 Gotham 并且年份是 2011。如果您能帮助我,将不胜感激,谢谢, 太完美了,非常感谢,我想问你最后一个疑问,我有一个名为 Lnc 的列,它是整数类型,我想在名为 Log_Lnc 的相同数据框是 Lnc 列的 log base2 值。如果您能帮助我,将不胜感激 我试图将您解释的相同逻辑应用于以下代码,但它不起作用 - 如果 mdy(9,24,2007)

以上是关于根据列值删除Python Pandas中的DataFrame行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据另一个数据框 python pandas 替换列值 - 更好的方法?

根据现有的列名和列值在 python 数据框中创建列

根据其他列值/ Pandas -Python 在数据框中创建 ID 列

使用 Python pandas 根据列值生成每个组的百分比

根据 Pandas 中的公共列值合并两个数据框

遍历 pandas 行并根据其他列中的值设置列值