Python 在pandas中将'replace'与'isnull'组合
我尝试根据同一数据帧中另一个系列的缺失值来选择一个系列的部分 我使用了Python 在pandas中将'replace'与'isnull'组合,python,pandas,Python,Pandas,我尝试根据同一数据帧中另一个系列的缺失值来选择一个系列的部分 我使用了.loc,这是一个很好的解决方案 df.loc[df[“B”].isnull(),“A”]=np.NaN 最初我想使用: df[“A”].replace(df[“B”].isnull(),np.NaN,inplace=True) 这是行不通的。为什么会这样?replace用于替换特定值,但它不适用于布尔掩码。如果要屏蔽元素,正确的函数应该是或 最小可验证示例 df = pd.DataFrame({'A': ['a', '
.loc
,这是一个很好的解决方案
df.loc[df[“B”].isnull(),“A”]=np.NaN
最初我想使用:
df[“A”].replace(df[“B”].isnull(),np.NaN,inplace=True)
这是行不通的。为什么会这样?
replace
用于替换特定值,但它不适用于布尔掩码。如果要屏蔽元素,正确的函数应该是或
最小可验证示例
df = pd.DataFrame({'A': ['a', 'b', 'c'], 'B': [np.nan, 1, np.nan], })
df
A B
0 a NaN
1 b 1.0
2 c NaN
# df['A'].where(~df['B'].isnull(), inplace=True)
df['A'].mask(df['B'].isnull(), inplace=True)
df
A B
0 NaN NaN
1 b 1.0
2 NaN NaN
replace
用于替换特定值,它不适用于布尔掩码。如果要屏蔽元素,正确的函数应该是或
最小可验证示例
df = pd.DataFrame({'A': ['a', 'b', 'c'], 'B': [np.nan, 1, np.nan], })
df
A B
0 a NaN
1 b 1.0
2 c NaN
# df['A'].where(~df['B'].isnull(), inplace=True)
df['A'].mask(df['B'].isnull(), inplace=True)
df
A B
0 NaN NaN
1 b 1.0
2 NaN NaN
非常感谢你。
mask
和Where
之间的区别在哪里?@ChrisBea.Where(mask,b)
与np相同。其中(m,a,b)
而a.mask(mask,b)
与np相同。其中(m,b,a)
@ChrisBe这里我推荐mask
,因为你不必反转df['b'].isnull()
之后,效率会提高一点。对不起,我忘了。谢谢各位,非常感谢。mask
和Where
之间的区别在哪里?@ChrisBea.Where(mask,b)
与np相同。其中(m,a,b)
而a.mask(mask,b)
与np相同。其中(m,b,a)
@ChrisBe这里我推荐mask
,因为你不必反转df['b'].isnull()
之后,效率会提高一点。对不起,我忘了。谢谢各位。