删除多个变量的数据行
Deleting rows of data for multiple variables
我使用 pandas 数据框清理了 500 多个文件,稍后以矩阵形式读入。我现在想从整个文件的多个变量中删除缺失的数据行。每个变量的形状都非常长,例如,tc 和 wspd 的形状为 (84479, 558),pressure 的形状为 (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 值,它严格要求整数、浮点数等。
如果有人有任何指导,我愿意接受删除数据行的新方法。我非常感激。
我会将您的二维数组加载为 pandas DataFrames,然后使用 dropna
函数删除任何包含空值的行
wspd = pd.read_pickle('/home/wspd').dropna()
tc = pd.read_pickle('/home/tc').dropna()
pandas.DataFrame.dropna 的文档是 here
我使用 pandas 数据框清理了 500 多个文件,稍后以矩阵形式读入。我现在想从整个文件的多个变量中删除缺失的数据行。每个变量的形状都非常长,例如,tc 和 wspd 的形状为 (84479, 558),pressure 的形状为 (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 值,它严格要求整数、浮点数等。
如果有人有任何指导,我愿意接受删除数据行的新方法。我非常感激。
我会将您的二维数组加载为 pandas DataFrames,然后使用 dropna
函数删除任何包含空值的行
wspd = pd.read_pickle('/home/wspd').dropna()
tc = pd.read_pickle('/home/tc').dropna()
pandas.DataFrame.dropna 的文档是 here