首页 > 解决方案 > 仅当没有 NaN 时,如何在 Pandas 数据框中加入两列的值

问题描述

我正在尝试在 DataFrame 的新列中加入两个字符串,但尝试了几种方法但都没有奏效,我最接近的是 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:只有整数、切片 ( :)、省略号 ( ...)、numpy.newaxis ( None) 和整数或布尔数组是有效的索引

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

谢谢

标签: pythonpandasdataframenotnull

解决方案


+由于两列都是字符串,因此您可以使用with , between将它们相加。然后对于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

推荐阅读