Заполнение нескольких значений NaN на основе 2 условий определенным числовым значением - PullRequest
0 голосов
/ 10 февраля 2019

Итак, в основном, я пытался заполнить значения nan столбца на основе другого столбца.

Скажем, у меня есть столбец, который называется '' вмещает '' (то есть сколько людей в определенном домеможет вместить) и другой столбец, называемый спальнями.

Чтобы заполнить эти значения nan, я обнаружил, например, что является наиболее распространенным значением для размещения, когда в доме есть 1 спальня.Он вернул, что наиболее распространенное значение - 2. Что я хотел сделать сейчас, это заполнить значения nan в столбцах, которые соответствуют 1-комнатному дому, с 2.

Пример данных:ниже:

 accommodates bathrooms  bedrooms
    nan         2.0       1.0
    nan         2.0       1.0
    nan         2.0       1.0
    nan         2.0       1.0
    nan         2.0       1.0
    nan         2.0       1.0
    ...         ...       ...

Я сделал аналогичные вещи для других атрибутов, поэтому я попробовал следующий код:

accom_cond=((house.bedrooms==1) & (house.accommodates.isna()))
accom_val= [2,2,2,2,2,2,2,2,2,2,2,2,2,2]

house.accommodates= np.select(accom_cond,accom_val,house.accommodates)

Это предполагает, что при этих обстоятельствах существует 14 значений NaN (Кроме того, если вы знаете лучший способ, чем повторять значение 2 14 раз, я был бы признателен: D)

Однако, это не работает.Он возвращает ошибку:

ValueError: list of cases must be same length as list of conditions

Я попытался напечатать, чтобы увидеть, что происходит, и вернул следующее:

accom_cond
Out[156]: 
0       False
1       False
2       False
3       False
4       False
5       False
6       False
7       False
8       False
9       False
10      False
11      False
12      False
13      False
14      False
15      False
16      False
17      False
18      False
19      False
20      False
21      False
22      False
23      False
24      False
25      False
26      False
27      False
28      False
29      False
        ...

Я не понимаю, почему он не возвращает только14 нулевых значений, которые соответствуют условиям, которые я определил.

Может кто-нибудь помочь мне с этим?(Заранее спасибо, что нашли время прочитать это !!)

1 Ответ

0 голосов
/ 10 февраля 2019
 accom_cond=[((house.bedrooms==1) & (house.accommodates.isna()))]
 accom_val= [2]

Согласно numpy.select документации : Первый параметр - ваш список условий.Второй параметр - это ваш список опций.
Это означает, что если первое условие выполнено, верните первый вариант, в противном случае, если второе условие выполнено, верните второй параметр и т. Д.Остальное верните третий параграф.

...