如何根据条件删除python数据框中的行?

2024-09-27 23:28:49 发布

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

我有以下数据:
数据框=

   Emp_Name   Leaves   Leave_Type   Salary   Performance
0  Christy      20      sick        3000.0    56.6
1  Rocky        10      Casual      kkkk      22.4
2  jenifer      50      Emergency   2500.6   '51.6'
3  Tom          10      sick        Nan       46.2
4  Harry        nn      Casual      1800.1   '58.3'
5  Julie        22      sick        3600.2   'unknown'
6  Sam          5       Casual      Nan       47.2
7  Mady         6       sick        unknown   Nan

输出:

   Emp_Name   Leaves   Leave_Type   Salary   Performance
0  Christy      20      sick        3000.0    56.6
1  jenifer      50      Emergency   2500.6    51.6
2  Tom          10      sick        Nan       46.2
3  Sam          5       Casual      Nan       47.2
4  Mady         6       sick        unknown   Nan

我想删除数字列(假期、薪资、绩效)中存在数据类型错误的记录。
如果数值列包含字符串,那么该行将从数据框中删除吗?你知道吗

df[['Leaves','Salary','Performance']].apply(pd.to_numeric, errors = 'coerce')

但这会把价值观隐藏起来。你知道吗


Tags: 数据nametypeperformancenanunknownleavessalary
1条回答
网友
1楼 · 发布于 2024-09-27 23:28:49

让我们从一个关于示例数据的注释开始:

它包含Nan字符串,这些字符串是而不是 确认为NaNs。 为了把它们当作“NaN”,我用read-fwf阅读了原文, 传递na_值=['Nan']。你知道吗

现在开始主要任务:

定义用于检查单元格是否可接受的函数:

def isAcceptable(cell):
    if pd.isna(cell) or cell == 'unknown':
        return True
    return all(c.isdigit() or c == '.' for c in cell)

我注意到你接受价值观。 如果单元格只包含未知字符串,则您也可以创建一个单元格,但您没有 如果某个单词括在之间,则接受该单元格,例如引号。你知道吗

如果你改变了你对什么是可接受的/不可接受的的看法,那就改变主意 上述功能相应地发挥作用。你知道吗

然后,只留下在上述3个行中具有所有可接受值的行 列,运行:

df[df[['Leaves', 'Salary', 'Performance']].applymap(isAcceptable).all(axis=1)]

相关问题 更多 >

    热门问题