从数据框中删除空白列不起作用,Python 3.6

时间:2017-09-20 02:48:59

标签: python python-3.x pandas

如果整列有纳米或空白值,我正在删除数据框列。删除nan工作正常并且分配数据[data ==''] = np.nan不能在for循环下工作。

 repos$: Observable<Repo[]>;
this.repos$ = this.candidateService.getCandidateList()
.switchMap((list: Repo[]) => {
  let requests = list.map((i) => {
     return this.secondRequest(i)
   })
  return Observalbe.forkJoin(requests).map((dataList)=>{
     return dataList.map((data, index) => {
         return {
              ...list[index], 
              collaborator: data
            }
      })
    })
})
 getCandidateList(){
this.http.get<Repo[]>('https://api.github.com/user/repos', {headers});
}

我根据以下评论更新了代码,但同样的问题。

for i in range(1, j):
    data = pd.DataFrame(dfs[i])
    data = data.dropna(axis=1, how='all') # Remove column if column has only nan values

    data[data == ''] = np.nan
    data = data.dropna(axis=1, how='all') # Remove column if column has only blank values 

enter image description here

2 个答案:

答案 0 :(得分:5)

使用,replace

data = data.replace('', np.nan).dropna(axis=1, how='all')

答案 1 :(得分:2)

选项1
您也可以使用mask

data.mask(data.astype(object).eq('')).dropna(axis=1, how='all')

但是,因为bool('')评估为False,如果数据框中没有其他内容,您也可以

data.mask(data.astype(bool)).dropna(axis=1, how='all')

选项2
另一种方式是

data[data.mask(df.astype(object).eq('')).notnull().any()]