【python-pandas】筛选数据集中指定某些列&行都为(不)空的行列

背景:
最近在实战中遇到需要对大数据集的一些空值数据做处理,分类处理一些指定列名的列值都为空的数据行,并分别对拆分的两组数据的完整数据(其实就是利用其他列)进行数据计算处理。
下面抽象出两句解决方法:

源数据:
import numpy as np
import pandas as pd
nan = np.nan
data = {0: {0: 1.0, 1: nan, 2: 1.0},
1: {0: nan, 1: nan, 2: nan},
2: {0: 3, 1: 1, 2: 3},
4: {0: 5, 1: 5, 2: 5}}
df = pd.DataFrame(data)

算法思想:
1.先用指定列1&2,找到都为空的row的index
2.利用reindex重新筛选序列
3.利用isin在总数据集进行求反

index_c_r = df[[0,1]].dropna(how=‘all’,axis=0).index
df_allna = df.reindex(index=index_c_r )
df_not_allna = df[~df[0].isin(df_allna[0])]

注:
找到df中列0与列1都为空值的行的序列,并完整查询这两行;
0,1为指定的列名;
all为都为空值(any可以计算任一为空);
axis用0来指定处理行;
index为序
reindex指定筛选数据集相同的index


又遇到使用了,添一句:

ans_ na_val = ans[~ans[‘A’].isin(ans.dropna(how=‘any’)[‘A’])]

以上即可筛选出大数据集中,任一格为np.nan的所有行。(A为列名)

你可能感兴趣的:(python,pandas,开发语言)