首页 > 解决方案 > Pandas - 根据 if 条件创建新列

问题描述

我有以下数据框,我想创建一个列'poster'来显示用户是否comment_id != np.nannp.nan是否否则。

我尝试在 for 循环中使用 if 语句来执行此操作,但'poster'如果comment_id 列中有一个整数,我不会只在列中获取用户名,而是在两个整数的“海报”列中获取用户名并np.nan'comment_id'列中。可能只有一件小事是错误的,但我似乎无法弄清楚。

非常感谢您帮助我!

d = {'comment_id':[1, np.nan, 2, np.nan, np.nan, 3],
     'user': ["Bob", "Ben", "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

标签: pandasif-statementdata-cleaning

解决方案


loccomment_id不为空的行,然后保存用户

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

推荐阅读