Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 面罩在使用时是否有不同的效果?_Python_Pandas_Dataframe_Series_Mask - Fatal编程技术网

Python 面罩在使用时是否有不同的效果?

Python 面罩在使用时是否有不同的效果?,python,pandas,dataframe,series,mask,Python,Pandas,Dataframe,Series,Mask,我刚刚发现面具的这种奇怪行为,有人能给我解释一下吗 (A) [输入] df=pd.DataFrame(np.arange(10).重塑(-1,2),列=['A','B']) df['C']='hi' df.mask(df[['A','B']]不同结果的根本原因是传递的布尔数据帧与要屏蔽的数据帧的形状不同。df.mask()用inplace的值填充缺少的部分 从源代码中,您可以看到内部调用。pandas.DataFrame.where()然后调用一个方法来替换条件为False的值 我只是以df.w

我刚刚发现面具的这种奇怪行为,有人能给我解释一下吗

(A) [输入]

df=pd.DataFrame(np.arange(10).重塑(-1,2),列=['A','B'])
df['C']='hi'

df.mask(df[['A','B']]不同结果的根本原因是传递的布尔数据帧与要屏蔽的数据帧的形状不同。
df.mask()
inplace
的值填充缺少的部分

从源代码中,您可以看到内部调用。
pandas.DataFrame.where()
然后调用一个方法来替换条件为False的值

我只是以
df.where()
为例,下面是示例代码:

将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame(np.arange(12).重塑(-1,3),列=['A','B','C'])
df1=df.where(df[['A','B']]简单一点

df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
df['C'] ='hi'
df.mask(df[['A', 'B']]<3)

还有,
df.mask(df[['A','B','C']]欢迎来到SO-JeB。很好的观察!如果你不在适当的地方使用
的话,也许你应该做
df=…
。或者你应该先阅读
df.mask()的文档
-也许它解释了所有具有选项
inplace
的函数在有或没有
inplace=True
的情况下工作的不同。它们创建
inplace
是出于某种原因-以不同的方式工作。主要的一点是,在有和没有inplace=True的情况下,对C列有不同的处理方法。我们处理C列中的值也会满足标准和应更改为NaN(因为掩码函数的参数
other
默认为NaN)。这与我们是否已重新分配给原始值无关df@furas是的,但如果我做df=…当in place为False时,输出与in place=True不同,这是可疑的
   A   B   C
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11
       A      B
0   True   True
1  False  False
2  False  False
3  False  False
       A      B   C
0   True   True NaN
1  False  False NaN
2  False  False NaN
3  False  False NaN
   A   B   C
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11
# print(df1)
     A    B   C
0  0.0  1.0 NaN
1  NaN  NaN NaN
2  NaN  NaN NaN
3  NaN  NaN NaN

# print(df) after df.where(df[['A', 'B']]<3, inplace=True)
     A    B   C
0  0.0  1.0   2
1  NaN  NaN   5
2  NaN  NaN   8
3  NaN  NaN  11
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
df['C'] ='hi'
df.mask(df[['A', 'B']]<3)
>>> df[["A","B","C"]].mask(df[['A', 'B']]<3)
     A    B    C
0  NaN  NaN  NaN
1  NaN  3.0  NaN
2  4.0  5.0  NaN
3  6.0  7.0  NaN
4  8.0  9.0  NaN
>>>
TypeError: '<' not supported between instances of 'str' and 'int'
>>> df[["A","B"]].mask(df[['A', 'B']]<3)
     A    B
0  NaN  NaN
1  NaN  3.0
2  4.0  5.0
3  6.0  7.0
4  8.0  9.0