我有dataframe:
df = pd.DataFrame({'student_id': [71, 63, 23],
'student_name': [nan, 'Peter Andrews', 'Amy Powers'],
})
我正在创建一个新的列column连接id + name使用
df['student_id_name'] = df['student_id'].astype(str) + ' ' + df['student_name']
所需输出:
{student_id_name : [71, 63 Peter Andrews, 23 Amy Powers]}
结果:
{student_id_name : [nan, 63 Peter Andrews, 23 Amy Powers]}
你可以帮助达到预期的结果吗?
使用Series.str.cat
与na_rep
参数,最后通过Series.str.strip
删除可能的尾随空格:
df['student_id_name'] = (df['student_id'].astype(str).str.cat(df['student_name'],
sep=' ', na_rep='').str.strip())
print (df)
student_id student_name student_id_name
0 71 NaN 71
1 63 Peter Andrews 63 Peter Andrews
2 23 Amy Powers 23 Amy Powers
您可以使用fillna()
来清除数据框中的缺失/空白值。然后你原来的表达就会起作用。注意,这实际上会将nan替换为所使用的替换值:
import math
df = pd.DataFrame({'student_id': [71, 63, 23],
'student_name': [math.nan, 'Peter Andrews', 'Amy Powers'],
})
#
df = df.fillna('')
df['student_id_name'] = df['student_id'].astype(str) + ' ' + df['student_name']
[Out]:
student_id student_name student_id_name
0 71 71
1 63 Peter Andrews 63 Peter Andrews
2 23 Amy Powers 23 Amy Powers