我有一个系列。我想使用蒙版从该系列中提取一些元素,并使用不同的蒙版将它们放回到同一系列中的相同或不同位置。像这样:
s = pd.Series(randn(5))
s
0 0.466829
1 -1.821200
2 0.025857
3 0.238267
4 2.192390
dtype: float64
s[pd.Series([False,True,False,True,False])] = s[pd.Series([True,False,True,False,False])]
s
0 0.466829
1 NaN
2 0.025857
3 NaN
4 2.192390
dtype: float64
正如您所看到的,该示例并不起作用。请注意,在我的用例中,两个掩码保证具有相同数量的True
和False
元素。
答案 0 :(得分:1)
在Pandas系列上设置值时,索引用于对齐值。因此,对于您的示例,即使值的数量相同,索引也不同,因此为空值。如果要覆盖此行为,可以使用values
访问Series的基础数组(忽略索引)。此外,您不需要使用pd.Series
显式地转换索引器,如果您通过列表,这将隐式发生:
s[[False,True,False,True,False]] = s[[True,False,True,False,False]].values
s
Out[300]:
0 0.013654
1 0.013654
2 0.691198
3 0.691198
4 0.344096
dtype: float64