仅当 none 为 NaN 时,如何在 Pandas 数据框中连接两列的值

How do I join the values of two columns in a Pandas dataframe only if none are NaN

我正在尝试将两个字符串连接到 DataFrame 中的新列中,但尝试了几种方法并且 none 工作,我最接近的是使用 lambda 公式,但仍然不能理解问题。有人可以帮忙吗?

数据框:

    full_name   certificacion   company
member_#            
296057  John Doe    A          CO3
155977  Jane Doe    NaN        CO2
228610  Johnny Doe  A, C       CO3

我需要一个包含 'full_name' 和 'certification' 的新列:

member_name
John Doe, A
Jane Doe
Johnny Doe, A, C

我正在尝试:

df['member_name'] = df[df.columns[['full_name', 'certificacion']]].apply(
    lambda x: ', '.join() if x['certificacion'].notnull() else x['full_name'], axis=1)

但是报错:

IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices

我是 Pandas 的新手,尝试了上述 lambdas 函数的几种变体,但似乎找不到正确的语法。

谢谢

由于两列都是字符串,您可以将它们与 +, 相加。然后对于具有 NaN 的行只需处理具有 np.where() 逻辑的行以使用 full_name 而不是 member_name:

df['member_name'] = df['full_name'] + ', ' + df['certificacion']
df['member_name'] = np.where((df['member_name'].isna()), df['full_name'], df['member_name'])

输出:

member_#      full_name certificacion company       member_name
0    296057    John Doe             A     CO3       John Doe, A
1    155977    Jane Doe           NaN     CO2          Jane Doe
2    228610  Johnny Doe          A, C     CO3  Johnny Doe, A, C

又一个班轮

df['member_name']=np.where(df['Certificacion'].isna(), df['full_name'], df['full_name']+', '+df['Certificacion'])