如何解决熊猫-根据if条件创建新列
我具有以下数据框,并且我想创建一列'poster'
,该列向用户显示comment_id != np.nan
是否为np.nan
,否则为{1>}。
我曾尝试在for循环中使用if语句来执行此操作,但如果在comment_id列中包含整数,则不会仅在'poster'
列中获取用户名,而是在np.nan
列中的整数和'comment_id'
的“海报”列。可能只有一小件事是错误的,但我似乎无法弄清楚。
非常感谢您的帮助!
d = {'comment_id':[1,np.nan,2,3],'user': ["Bob","Ben","Charly","Steve","Tracy"]}
toydf = pd.DataFrame(d)
toydf['poster'] = np.nan
for n in toydf['comment_id']:
if n != np.nan:
toydf['poster']=toydf['user']
else:
toydf['poster']= np.nan
解决方法
loc
行,其中 comment_id 不为空,然后保存 user 值
toydf.loc[toydf['comment_id'].notna(),'poster'] = toydf['user']
#output
comment_id user poster
0 1.0 Bob Bob
1 NaN Ben NaN
2 2.0 Ben Ben
3 NaN Charly NaN
4 NaN Steve NaN
5 3.0 Tracy Tracy
,
让我们尝试在条件mask
下使用isna
df['New'] = df.user.mask(df.comment_id.isna())
df
Out[145]:
comment_id user New
0 1.0 Bob Bob
1 NaN Ben NaN
2 2.0 Ben Ben
3 NaN Charly NaN
4 NaN Steve NaN
5 3.0 Tracy Tracy
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。