根据2个条件,使用特定的数值填充多个NaN值

2024-06-07 09:04:20 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本上,我一直在尝试根据另一列填充一列的nan值。你知道吗

比方说,我有一个叫做“容纳”的专栏(意思是一个房子能容纳多少人)和另一个叫做“卧室”的专栏。你知道吗

为了填充这些nan值,我发现,例如,当一个房子只有一个卧室时,最常见的住宿价值是什么。它返回最常见的值是2。我现在要做的是填充“容纳”列中的nan值,这对应于一个一居室的房子,有两个。你知道吗

数据示例如下:

 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值(同样,如果您知道一种比重复值214次更好的方法,我将不胜感激:d)

但是,它不起作用。它返回错误:

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

我试图打印accom\u cond以查看发生了什么,它返回了以下内容:

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个跟在我定义的条件后面的空值。你知道吗

有人能帮我吗? (提前感谢您抽出时间阅读此文!!)你知道吗


Tags: offalsevalnanlisthouse价值住宿
1条回答
网友
1楼 · 发布于 2024-06-07 09:04:20
 accom_cond=[((house.bedrooms==1) & (house.accommodates.isna()))]
 accom_val= [2]

根据numpy.selectdocumentation:第一个参数是您的条件列表。第二个参数是您的选项列表。
这意味着如果满足第一个条件,则返回第一个选项,否则如果满足第二个条件,则返回第二个选项,依此类推。否则返回第三个参数。你知道吗

相关问题 更多 >

    热门问题