我在研究ThinkBayes2,它给出的示例包含如下代码:selected = democrat[liberal]
这三个变量都是pandas系列包含布尔类型。我以前从未见过任何操作员或使用过它,所以我想知道是否有人能告诉我它是如何在这里工作的。。。
a = pd.Series([1, 0, 1])
b = pd.Series([1, 2, 0])
a, b, a[b], b[a]
结果:
(0 1
1 0
2 1
dtype: int64,
0 1
1 2
2 0
dtype: int64,
1 0
2 1
0 1
dtype: int64,
1 2
0 1
1 2
dtype: int64)
不知道这里发生了什么。。。
什么都没有"有条件的";或";布尔值";在这里,只是普通的熊猫时尚索引。
由于b
在概念上是[1, 2, 0]
,因此a[b]
将检索a
的内容,但使用b
作为索引,并按顺序检索。
换句话说,a[b]
将检索a[1], a[2], a[0]
,并且相当于a[[1, 2, 0]]
。
如果a
包含字母,也许会更容易发现:
a = pd.Series(['a', 'b', 'c'])
b = pd.Series([1, 2, 0])
print(a[b])
输出
1 b
2 c
0 a
简单一步,非熊猫的等价物就是
a = ['a', 'b', 'c']
b = [1, 2, 0]
print([a[index] for index in b])
['b', 'c', 'a']