Я понимаю, что удалить NaN
из фрейма данных так же просто, как df.dropna
, но по какой-то причине это не работает на моем, и я не уверен, почему.
Вот мой оригинальный фрейм данных:
fish_frame1: 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)
Это производит:
fish_frame1 after dropna: 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
Я новичок в Pandas
, поэтому я не уверен, что это не работает, потому что я делаю что-то неправильно, или я что-то неправильно понимаю, или неправильно использую команду. Любая помощь приветствуется, спасибо.
.dropna()
не изменяет DF на месте - он возвращает измененный DF... поэтому вам нужно либо вернуть его обратно, например:df = df.dropna()
, либо явно использовать параметрinplace=True
- person MaxU   schedule 17.07.2017NaN
у моего исходного? - person theprowler   schedule 17.07.2017NaN
- поскольку во всех строках есть хотя бы один NaN, она удалит их все. - person Corley Brigman   schedule 17.07.2017dropna()
по умолчанию делаетinplace=False
, поэтому вам нужно будет назначить это; но если вы хотите на месте, просто сделайтеdropna(..., inplace=True)
- person smci   schedule 10.09.2019