在某些条件下删除某些行(pandas)



创建数据帧df2:如果value1, value2, value3为NaN,则保留行

创建一个数据框架df3:保留行如果value5, value6, value7是NaN

输入数据帧,df:

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   58390   28.4    32.2    31.3    30.6    40.7    40.0    39.6    40.10   NaN
1   58395   31.4    32.8    31.5    31.9    NaN NaN NaN 38.60   NaN
2   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
3   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
4   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

输出数据帧df2:

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
1   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
2   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

输出数据帧df3:

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   58395   31.4    32.8    31.5    31.9    NaN NaN NaN 38.60   NaN
1   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
2   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
3   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

创建一个数据框df2:如果value1, value2, value3是NaN,则保留行

创建一个数据框架df3:保留行如果value5, value6, value7是NaN

输入数据帧,df:

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   58390   28.4    32.2    31.3    30.6    40.7    40.0    39.6    40.10   NaN
1   58395   31.4    32.8    31.5    31.9    NaN NaN NaN 38.60   NaN
2   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
3   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
4   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

输出数据帧df2:

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
1   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
2   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

输出数据帧df3:

name    value1  value2  value3  value4  value5 value6   value7  value8  value9
0   58395   31.4    32.8    31.5    31.9    NaN NaN NaN 38.60   NaN
1   67488   NaN NaN NaN 26.6    NaN NaN NaN 34.90   NaN
2   67490   NaN NaN NaN 29.9    NaN NaN NaN 39.65   NaN
3   67501   NaN NaN NaN 20.5    NaN NaN NaN 27.10   NaN

isnaall使用布尔索引

如果您希望重复执行此操作,最好使用列表来收集输出:

cols = [['value1', 'value2', 'value3'],
['value5', 'value6', 'value7']]
out = [df[df[c].isna().all(axis=1)] for c in cols]

输出:

[    name  value1  value2  value3  value4  value5  value6  value7  value8  value9
2  67488     NaN     NaN     NaN    26.6     NaN     NaN     NaN   34.90     NaN
3  67490     NaN     NaN     NaN    29.9     NaN     NaN     NaN   39.65     NaN
4  67501     NaN     NaN     NaN    20.5     NaN     NaN     NaN   27.10     NaN,
name  value1  value2  value3  value4  value5  value6  value7  value8  value9
1  58395    31.4    32.8    31.5    31.9     NaN     NaN     NaN   38.60     NaN
2  67488     NaN     NaN     NaN    26.6     NaN     NaN     NaN   34.90     NaN
3  67490     NaN     NaN     NaN    29.9     NaN     NaN     NaN   39.65     NaN
4  67501     NaN     NaN     NaN    20.5     NaN     NaN     NaN   27.10     NaN]

相关内容

  • 没有找到相关文章

最新更新