我有一个熊猫DataFrame,其中包含如下所示:
A A_type
"Hello" String
15 Integer
"Hi" String
56.78 Float
我想创建第三列,如果A具有名为“ String”的相应“ A_type”元素,则报告与A相同的值,否则打印“空白”。该列如下所示:
B
"Hello"
"blank"
"Hi"
"blank"
我尝试做类似的事情:
df['B'] = df['A']
for j in df['A_type']:
for i in df['B']:
if j == "String":
i = i
else:
i = "blank"
有没有更有效的方法来解决此类问题,可以帮助我避免所有这些for循环?
在此先多谢
在颠倒状态下使用Series.where
或Series.mask
,或numpy.where
:
df['B'] = df['A'].where(df['A_type'] == "String", 'blank')
#df['B'] = df['A'].mask(df['A_type'] != "String", 'blank')
#alternative
#df['B'] = np.where(df['A_type'] == "String", df['A'], 'blank')
print (df)
A A_type B
0 Hello String Hello
1 15 Integer blank
2 Hi String Hi
3 56.78 Float blank
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句