Python 面罩在使用时是否有不同的效果?
我刚刚发现面具的这种奇怪行为,有人能给我解释一下吗 (A) [输入]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
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