我有一个包含以下内容的 pandas DataFrame df1:
Serial N year current
B 10 14
B 10 16
B 11 10
B 11
B 11 15
C 12 11
C 9
C 12 13
C 12
我想创建一个基于 df1 的 DataFrame,但它删除了任何包含空值的行。例如:
Serial N year current
B 10 14
B 10 16
B 11 10
B 11 15
C 12 11
C 12 13
我试过这样的东西
df1=df[~np.isnan(df["year"]) or ~np.isnan(df["current"])]
但我收到以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
可能是什么问题?
请您参考如下方法:
您只需调用 dropna 即可实现此目的:
df1 = df.dropna()
至于为什么您尝试的操作失败 或 运算符不理解在比较类似数组的结构时应该做什么,因为如果 1 个或多个元素满足 bool 标准,它是不明确的,您应该使用&、| 和 ~ 用于 and、or 和 不分别。此外,对于多个条件,由于运算符优先级,您需要将条件括在括号中。
In [4]:
df.dropna()
Out[4]:
Serial N year current
0 B 10 14
1 B 10 16
2 B 11 10
4 B 11 15
5 C 12 11
7 C 12 13
