Итак, в основном, я пытался заполнить значения 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 нулевых значений, которые соответствуют условиям, которые я определил.
Может кто-нибудь помочь мне с этим?(Заранее спасибо, что нашли время прочитать это !!)