如何从不同的蒙版设置蒙版Pandas系列的值

时间:2015-08-10 21:39:37

标签: python pandas

我有一个系列。我想使用蒙版从该系列中提取一些元素,并使用不同的蒙版将它们放回到同一系列中的相同或不同位置。像这样:

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

正如您所看到的,该示例并不起作用。请注意,在我的用例中,两个掩码保证具有相同数量的TrueFalse元素。

1 个答案:

答案 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