如何解决当且仅当缺少特定列的值时,才如何删除行?
我需要通过删除特定的行或列来处理缺失值。我知道如何删除缺少值的列或行,但是我需要一点点不同。当且仅当两个特定的列缺少值时,才需要删除行。
这是我尝试过的示例:
# Basic libraries
import os
import pandas as pd
import numpy as np
data_dict = {'First':[100,90,np.nan,np.nan],'Second': [30,45,56,'Third':[np.nan,40,80,'Forth': [30,50,np.nan]}
df1 = pd.DataFrame(data_dict)
df1.dropna(subset=['First','Second'],inplace=True)
df1
如图所示,我试图删除First==Nan
和Second==Nan
所在的行。换句话说,我需要两个条件都正确。因此,我只需要删除最后一行,两个值均为Nan。因此,由于满足其中一个条件,因此不会删除第2行。不幸的是,如果满足以下条件之一,我使用的命令将删除行。
解决方法
在DataFrame.dropna
中使用how='all'
参数,因为默认值为how='any'
,因此您无法使用:
操作方式:{'any','all'},默认为'any'
当我们有一个或多个NA时,确定是否从DataFrame中删除行或列。
'any':如果存在任何NA值,则删除该行或列。
“全部” :如果所有值均为NA,则删除该行或列。
df1.dropna(subset=['First','Second'],inplace=True,how='all')
print (df1)
First Second Third Forth
0 100.0 30.0 NaN 30.0
1 90.0 45.0 40.0 40.0
2 NaN 56.0 80.0 50.0
编辑:对于传递变量列表,请使用:
list_columns = ['First','Second','Third','Forth']
df1.dropna(subset=list_columns,how='all')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。