当布尔值的索引数组时,为什么数据帧返回数值数组?

时间:2019-02-23 09:02:45

标签: python pandas

我正在学习如何通过数据框训练和测试样本。 我查看了solution post,但我不了解代码语法的一些细节。

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.index.IndexDirection;
import org.springframework.data.mongodb.core.index.Indexed;

@Document(collection = "role")
public class Role {

    @Id
    private String id;
    @Indexed(unique = true, direction = IndexDirection.DESCENDING, dropDups = true)

    private String role;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

}

由于msk将返回一个布尔数组。 msk如何成为df的索引,而df [msk]返回实际的数值数据?据我了解,df的索引应该是一个字符串或字符串数​​组。

3 个答案:

答案 0 :(得分:0)

在NumPy和Pandas中,与您要索引的数组相同长度的布尔数组被视为“掩码”,并选择掩码为True的值。

答案 1 :(得分:0)

摘自boolean indexing上的Pandas文档:

  

您可以使用相同的布尔向量从DataFrame中选择行   长度作为DataFrame的索引

在您的示例中,通过使用{{1},您可以在df[msk]中获得与布尔向量df中的True值具有相同索引的行,其中{{1 }}与msk中的df[~msk]值相对应。

答案 2 :(得分:0)

temp = np.array([1, 1, 1, 2, 2, 2])
import numpy as np
print(temp == 1)

Output:
[ True  True  True False False False]

检查temp中的每个元素是否等于“ 1”,并返回相同的布尔列表。您正在做的事情与此相反。

这仅适用于numpy。 Python列表将不支持布尔索引。并在python本机列表上应用相同的代码,以得到“ False”作为回报,因为这会将数字与整个列表进行比较。