#python #numpy #pandas
#python #numpy #pandas
Вопрос:
У меня есть следующие данные с некоторыми отсутствующими отверстиями. Я просмотрел «как обрабатывать недостающие данные», но не могу найти ничего, что применимо в этой ситуации. Вот данные:
Species GearUsed AverageFishWeight(lbs) NormalRange(lbs) Caught
0 BlackBullhead Gillnet 0.11 0.8-7.7 0.18
1 BlackCrappie Trapnet 6.22 0.7-3.4 0.30
2 NaN Gillnet 1.00 0.6-3.5 0.30
3 Bluegill Trapnet 11.56 6.1-46.6 0.14
4 NaN Gillnet 1.44 NaN 0.21
5 BrownBullhead Trapnet 0.11 0.4-2.1 1.01
6 NorthernPike Trapnet 0.22 NaN 4.32
7 NaN Gillnet 2.22 3.5-10.5 5.63
8 Pumpkinseed Trapnet 0.89 2.0-8.5 0.23
9 RockBass Trapnet 0.22 0.5-1.8 0.04
10 Walleye Trapnet 0.22 0.3-0.7 0.28
11 NaN Gillnet 1.56 1.3-5.0 2.54
12 WhiteSucker Trapnet 0.33 0.3-1.4 2.76
13 NaN Gillnet 1.78 0.5-2.7 1.32
14 YellowPerch Trapnet 1.33 0.5-3.3 0.14
15 NaN Gillnet 27.67 3.4-43.6 0.14
Мне нужно, чтобы NAN в столбце species были просто именем над ним, например, строка 2 будет BlackCrappie. Я хотел бы выполнить итерацию по фрейму и вручную указать название вида, но я не слишком уверен в том, как это сделать, а также в других ответах рекомендуется в первую очередь не выполнять итерацию по фрейму данных.
Как мне получить доступ к каждой ячейке фрейма по отдельности? Спасибо!
PS имена столбцов неверны, нет желтого окуня весом 27 фунтов. 🙂
Комментарии:
1. Чтобы повторить, к чему, вероятно, приводили другие ответы: вам действительно нужно перебирать фрейм, или вы просто думаете , что вам нужно перебирать фрейм, чтобы исправить NAN? Потому что здесь нет необходимости.
2. Мне действительно нужно исправить NAN, потому что это будет храниться в базе данных sql, если вы это имеете в виду, в противном случае нет, я не вижу, как pandas или numpy могут это исправить. Однако я новичок в фреймах данных. Спасибо DSM.
3. Дело в том, что с
pandas
помощью вы хотите сделать как можно больше, используя быстрые встроенные операции, а не переходя по элементам. В этом случае, используяfillna
, как продемонстрировал CT Zhu (и вы можете выбрать определенные столбцы или изменить алгоритм заполнения.)4. DSM на месте, кроме того, подумайте
df['Species']=df.Species.fillna(method='pad')
, хотите ли вы просто заполнить строку названия вида.
Ответ №1:
Вы хотите заполнить недостающие значения и в других строках? Кажется, для чего fillna()
:
In [83]:
print df.fillna(method='pad')
Species GearUsed AverageFishWeight(lbs) NormalRange(lbs) Caught
0 BlackBullhead Gillnet 0.11 0.8-7.7 0.18
1 BlackCrappie Trapnet 6.22 0.7-3.4 0.30
2 BlackCrappie Gillnet 1.00 0.6-3.5 0.30
3 Bluegill Trapnet 11.56 6.1-46.6 0.14
4 Bluegill Gillnet 1.44 6.1-46.6 0.21
5 BrownBullhead Trapnet 0.11 0.4-2.1 1.01
6 NorthernPike Trapnet 0.22 0.4-2.1 4.32
7 NorthernPike Gillnet 2.22 3.5-10.5 5.63
8 Pumpkinseed Trapnet 0.89 2.0-8.5 0.23
9 RockBass Trapnet 0.22 0.5-1.8 0.04
10 Walleye Trapnet 0.22 0.3-0.7 0.28
11 Walleye Gillnet 1.56 1.3-5.0 2.54
12 WhiteSucker Trapnet 0.33 0.3-1.4 2.76
13 WhiteSucker Gillnet 1.78 0.5-2.7 1.32
14 YellowPerch Trapnet 1.33 0.5-3.3 0.14
15 YellowPerch Gillnet 27.67 3.4-43.6 0.14
Комментарии:
1. Нет, только столбец species, потому что заполнение значений данных неточно. Я думаю, что я понял это отсюда, спасибо! Я отмечу через несколько минут.
2. Ха, только что прокомментировал это 4 секунды назад в OP.
3. Да, много быстрых ответов! Даже не могу идти в ногу! Спасибо!