删除多个变量的数据行

时间:2016-06-13 23:28:56

标签: python pandas multidimensional-array missing-data rowdeleting

我有超过500个文件,我使用pandas数据框清理,稍后作为矩阵读入。我现在想要从我的整个文件的多个变量中删除丢失的数据行。每个变量的形状都很长,例如,tc和wspd具有形状(84479,558),压力具有形状(558,)。我之前尝试过以下示例,并且过去曾为具有相同形状的单维数组工作,但不再使用二维数组。

    bad=[]
    for i in range(len(p)):
        if p[i]==-9999 or tc[i]==-9999:
            bad.append(i)
    p=numpy.delete(p, bad)
    tc=numpy.delete(tc, bad)

我尝试使用以下代码,但没有成功(不幸的是)。

import numpy as n 
import pandas as pd

wspd=pd.read_pickle('/home/wspd').as_matrix()
tc=pd.read_pickle('/home/tc').as_matrix()

press=n.load('/home/file1.npz')
p=press['press']
names=press['names']

length=n.arange(0,84479)
for i in range(len(names[0])): #using the first one as a trial to run faster
    print i #used later to see how far we have come in the 558 files
    bad=[]
    for j in range(len(length)):
        if (wspd[j,i]==n.nan or tc[j,i]==n.nan):
            bad.append(j)
        print bad

从那里我打算像以前一样删除丢失的数据,除了索引我在第一个forloop中删除的维度。

     new_tc=n.delete(tc[j,:], bad)

不幸的是,这没有奏效。我也试过掩盖那些也没有用过的数组。

我需要删除数据的原因是我的下一个库不理解nan值,它需要严格的整数,浮点数等。

如果有人有任何指导,我愿意接受删除数据行的新方法。我非常感谢。

1 个答案:

答案 0 :(得分:0)

我会将您的二维数组加载为pandas DataFrames,然后使用dropna函数删除任何包含空值的行

wspd = pd.read_pickle('/home/wspd').dropna()
tc = pd.read_pickle('/home/tc').dropna()

pandas.DataFrame.dropna的文档是here