gpt4 book ai didi

python - 检查 pandas 中一行中的多个空白字段

转载 作者:行者123 更新时间:2023-12-01 09:02:12 25 4
gpt4 key购买 nike

我必须检查多列上的空白。我怎样才能有效地做到这一点。我正在检查单列的每一行是否有空白,如下所示 -

for item, frame in df['Column_1'].notnull().iteritems():
if(frame != False):
print item , frame

我需要一个数据框,其中 column_1、column_2 和 column_3 上的行不为空。

最佳答案

我认为需要按子集过滤列,然后检查是否有缺失值并按 DataFrame.all 获取所有 True 行,最后按 boolean indexing 过滤:

cols = ['Column_1','Column_2','Column_3']
df1 = df[df[cols].notnull().all(axis=1)]

更好的是使用dropna带参数子集:

df1 = df.dropna(subset=cols)

示例:

df = pd.DataFrame({'A':list('abcdef'),
'Column_1':[np.nan,5,4,5,5,4],
'Column_2':[np.nan,8,np.nan,4,2,3],
'Column_3':[np.nan,3,5,np.nan,1,0],
'E':[5,3,6,9,2,np.nan],
'F':list('aaabbb')})

print (df)
A Column_1 Column_2 Column_3 E F
0 a NaN NaN NaN 5.0 a
1 b 5.0 8.0 3.0 3.0 a
2 c 4.0 NaN 5.0 6.0 a
3 d 5.0 4.0 NaN 9.0 b
4 e 5.0 2.0 1.0 2.0 b
5 f 4.0 3.0 0.0 NaN b

cols = ['Column_1','Column_2','Column_3']
df1 = df.dropna(subset=cols)
print (df1)
A Column_1 Column_2 Column_3 E F
1 b 5.0 8.0 3.0 3.0 a
4 e 5.0 2.0 1.0 2.0 b
5 f 4.0 3.0 0.0 NaN b

性能:

在较小的 DataFrame 中, bool 索引解决方案速度更快,但它也取决于缺失值的数量。

graph

代码:

np.random.seed(123)

import perfplot

cols = ['Column_1','Column_2','Column_3']

def boolean_indexing(df):
df1 = df[df[cols].notnull().all(axis=1)]
return df1

def dropna_func(df):
df1 = df.dropna(subset=cols)
return df1

def make_df(n):
df = pd.DataFrame({'Column_1':np.random.choice([1,2,3,np.nan], size=n),
'Column_2':np.random.choice([1,2,3,4,5,6,7,8,np.nan], size=n),
'Column_3':np.random.choice([1,2,3,4,8,0,10,11,5,6,np.nan], size=n),
'E':np.random.choice([1,2,3,np.nan], size=n)})
return df

perfplot.show(
setup=make_df,
kernels=[boolean_indexing, dropna_func],
n_range=[2**k for k in range(2, 20)],
logx=True,
logy=True,
equality_check=False,
xlabel='len(df)')

关于python - 检查 pandas 中一行中的多个空白字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52379689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com