如果 pandas 数据框中的所有列都有空字符串,则删除行

Art*_*ezy 2 python dataframe python-3.x pandas

我有一个数据框如下

    Name Age
0    Tom  20
1   nick  21
2           
3  krish  19
4   jack  18
5           
6   jill  26
7   nick
Run Code Online (Sandbox Code Playgroud)

期望的输出是

    Name Age
0    Tom  20
1   nick  21
3  krish  19
4   jack  18
6   jill  26
7   nick
Run Code Online (Sandbox Code Playgroud)

索引不应更改,如果可能的话,如果我不必将空字符串转换为 NaN,那就太好了。仅当所有列都有''空字符串时才应将其删除

Qua*_*ang 9

你可以做:

# df.eq('') compare every cell of `df` to `''`
# .all(1) or .all(axis=1) checks if all cells on rows are True
# ~ is negate operator.
mask = ~df.eq('').all(1)

# equivalently, `ne` for `not equal`, 
# mask = df.ne('').any(axis=1)

# mask is a boolean series of same length with `df`
# this is called boolean indexing, similar to numpy's
# which chooses only rows corresponding to `True`
df = df[mask]
Run Code Online (Sandbox Code Playgroud)

或者在一行中:

df = df[~df.eq('').all(1)]
Run Code Online (Sandbox Code Playgroud)