Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中根据列的值删除列?_Python_Dataframe - Fatal编程技术网

在python中根据列的值删除列?

在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

如何根据列值删除数据框的列?我想删除所有包含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   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
的方法,但是.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
的方法。