我有一个DataFrame:
0 1 2 3 4 5 6 7
0 #0915-8 NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN LIVE WGT NaN AMOUNT NaN TOTAL
2 GBW COD NaN NaN 2,280 NaN $0.60 NaN $1,368.00
3 POLLOCK NaN NaN 1,611 NaN $0.01 NaN $16.11
4 WHAKE NaN NaN 441 NaN $0.70 NaN $308.70
5 GBE HADDOCK NaN NaN 2,788 NaN $0.01 NaN $27.88
6 GBW HADDOCK NaN NaN 16,667 NaN $0.01 NaN $166.67
7 REDFISH NaN NaN 932 NaN $0.01 NaN $9.32
8 GB WINTER FLOUNDER NaN NaN 145 NaN $0.25 NaN $36.25
9 GOM WINTER FLOUNDER NaN NaN 25,070 NaN $0.35 NaN $8,774.50
10 GB YELLOWTAIL NaN NaN 26 NaN $1.75 NaN $45.50
我希望删除所有的NaN
以及任何包含超过3个NaN
的列(其中一个或两个都可以)��� 我尝试了这段代码:
fish_frame.dropna()
fish_frame.dropna(thresh=len(fish_frame) - 3, axis=1)
但似乎对DataFrame没有任何影响 - 之后我看到的结果相同。
代码有什么问题,如何修复?
.dropna()
不会直接在原数据框上进行修改,而是返回一个修改后的数据框。因此你需要将其重新赋值给原数据框,例如:df = df.dropna()
或者显式地使用inplace=True
参数。 - MaxU - stand with UkraineNaN
的行 - 因为所有行都至少有一个 NaN,所以它将删除所有行。 - Corley Brigmandropna()
**默认情况下是inplace=False
**,所以你需要分配它;但如果你想要原地操作,只需执行dropna(..., inplace=True)
。 - smci