在python中根据列的值删除列?
如何根据列值删除数据框的列?我想删除所有包含null/''或零的列。假设熊猫数据帧在python中根据列的值删除列?,python,dataframe,Python,Dataframe,如何根据列值删除数据框的列?我想删除所有包含null/''或零的列。假设熊猫数据帧df为 df['c1']=[1,2,3,3,4] df['c2']=["a1","a2","a2","a2","a1"] df['c3']=[1,2,3,3,5] df['c4']=['','',0,0,0] df['c5']=[np.nan,np.nan,0,0,0] print df 输出为 c1 c2 c3 c4 c5 0 1 a1 1 NaN 1 2 a2
df
为
df['c1']=[1,2,3,3,4]
df['c2']=["a1","a2","a2","a2","a1"]
df['c3']=[1,2,3,3,5]
df['c4']=['','',0,0,0]
df['c5']=[np.nan,np.nan,0,0,0]
print df
输出为
c1 c2 c3 c4 c5
0 1 a1 1 NaN
1 2 a2 2 NaN
2 3 a2 3 0 0.0
3 3 a2 3 0 0.0
4 4 a1 5 0 0.0
我希望代码找出列
c4
和c5
,并将其删除。这就完成了示例数据帧的技巧
badvalues = [0, np.nan]
goodcolumns = [n for n in df.columns
if not df[n].isin(badvalues).any()]
df = df[goodcolumns]
如果nan值不起作用,则可以使用isnull
:
goodcolumns = [n for n in df.columns
if not ((df[n] == 0) | df[n].isnull()).any()]
这就完成了示例数据帧的技巧
badvalues = [0, np.nan]
goodcolumns = [n for n in df.columns
if not df[n].isin(badvalues).any()]
df = df[goodcolumns]
如果nan值不起作用,则可以使用isnull
:
goodcolumns = [n for n in df.columns
if not ((df[n] == 0) | df[n].isnull()).any()]
您可以使用:
您可以使用:
通常在发布之前至少需要一些努力。所以这不是一个编码服务。通常在发布之前至少需要一些努力。因此,它不是一个编码服务。IMO
isin
不能很好地处理np.nan
值:In[8]:s=pd.Series([1,np.nan,2])In[9]:s[~s.isin([np.nan])]Out[9]:0 1.0 1 nan 2.0数据类型:float64@lazy1:它适用于示例数据帧。我在回答中添加了一个使用isnull
的方法,但是.IMOisin
不能很好地处理np.nan
值:In[8]:s=pd.Series([1,np.nan,2]),In[9]:s[~s.isin([np.nan])]Out[9]:0 1.0 1 nan 2.0数据类型:float64@lazy1:它适用于示例数据帧。不过,我在回答中添加了一个使用isnull
的方法。