当前位置: 首页 > 知识库问答 >
问题:

Python:特定列中的drop value=0行[重复]

薛淮晨
2023-03-14

我想删除在特定列中具有零值的行

>>> df

   salary   age   gender
0   10000    23     1
1   15000    34     0
2   23000    21     1
3     0      20     0
4   28500     0     1
5   35000    37     1

第三列“性别”是一个二元变量,1表示男性,0表示女性。这里的0不是缺少的数据,我想删除缺少工资或年龄的行,这样我就可以

>>> df
   salary   age   gender
0   10000    23     1
1   15000    34     0
2   23000    21     1
3   35000    37     1

共有1个答案

吴鸿彩
2023-03-14

选择1

您可以使用pd.dataframe.loc过滤数据帧:

df = df.loc[~((df['salary'] == 0) | (df['age'] == 0))]

备选案文2

或者是一种更智能的方式来实现您的逻辑:

df = df.loc[df['salary'] * df['age'] != 0]

这是有效的,因为如果工资或年龄为0,他们的产品也将为0。

选择3

下面的方法可以很容易地扩展到几个列:

df.loc[(df[['a', 'b']] != 0).all(axis=1)]

解释

  • 在这三种情况下,都会生成布尔数组,用于索引数据帧。
 类似资料:
  • 问题内容: 我想转到.txt文件中的第34行并阅读它。您将如何在Python中做到这一点? 问题答案: 使用Python标准库的linecache模块: 应该正是您想要的。您甚至不需要打开文件-一切都为您完成!

  • 我是相对较新的python,并试图获得列具有特定值的行。 下面是我的代码示例 然而,当我运行这个我得到一个错误TypeError: ufunc'bitwise_and'不支持的输入类型,和输入不能安全强制任何支持的类型根据铸造规则"安全" 有人知道我为什么会出现这个错误吗?我可以做些什么来返回特定的值?任何帮助都将不胜感激!

  • 我有一个csv文件有5个密码。第五栏是可能有评论的栏。现在我想只提取第五列被填充的行。因此,从下面的示例中,只有第四行(如果包含标题,则为第五行)。然后我想用同样的格式写这一行。希望有人能帮忙。

  • 我想分解一个URL并提取我需要的信息。破坏URL很容易,但我不确定如何提取我需要的信息。 下面是URL中断部分。我想提取目标id部分并将其保存在dest_id中。在下面的示例URL中,它将是“1504033”(在“destination id=”旁边) 我知道如何通过索引号码呼叫,但它可能不会一直工作,因为该部分可以在任何地方而不是第5个索引。(可以是第三个或第四个)

  • 问题内容: 我有一个名为的数据框。如何重命名唯一的一列标题?例如到? 问题答案: data.rename(columns={‘gdp’:’log(gdp)’}, inplace=True) 在它接受一个字典作为一个PARAM演出,所以你只是传递一个字典一次入境。

  • 我有一个熊猫数据框,看起来像这样(但实际上要大得多): 我只想删除包含-500(2)和整列(f和g)的整行。我的数据框是自动生成的,我还不知道哪些列和行包含-500。 有人知道怎么做吗? 谢谢