Python 仅当数据帧中没有列为NaN时,如何连接数据帧中两列的值

Python 仅当数据帧中没有列为NaN时,如何连接数据帧中两列的值,python,pandas,dataframe,notnull,Python,Pandas,Dataframe,Notnull,我试图在一个数据帧内的一个新列中连接两个字符串,但尝试了几种方法,但都不起作用,最近的一种方法是使用lambda公式,但仍然无法理解这个问题。有人能帮忙吗 数据帧: full_name certificacion company member_# 296057 John Doe A CO3 155977 Jane Doe NaN CO2 228610 Johnny Doe A, C CO3

我试图在一个数据帧内的一个新列中连接两个字符串,但尝试了几种方法,但都不起作用,最近的一种方法是使用lambda公式,但仍然无法理解这个问题。有人能帮忙吗

数据帧:

    full_name   certificacion   company
member_#            
296057  John Doe    A          CO3
155977  Jane Doe    NaN        CO2
228610  Johnny Doe  A, C       CO3
我需要一个新的专栏,有“全名”和“认证”,如:

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)
但是得到一个错误:

索引器:仅整数、片(
)、省略号(
), numpy.newaxis(
None
)和整数或布尔数组是有效的索引

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


谢谢

因为两列都是字符串,所以您可以将它们与
+
一起添加到
之间。然后,对于具有
NaN
的行,只需处理那些具有
np.where()
逻辑的行,以使用
full\u name
而不是
member\u 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

由于两列都是字符串,因此可以将它们与
+
之间的字符串一起添加。然后,对于具有
NaN
的行,只需处理那些具有
np.where()
逻辑的行,以使用
full\u name
而不是
member\u 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'])
另一艘班轮

df['member_name']=np.where(df['Certificacion'].isna(), df['full_name'], df['full_name']+', '+df['Certificacion'])
Oneliner:
df[“全名”].where(df[“certificion”].isnull(),df[“全名”]+,“+df[“certificion”])
。Oneliner:
df[“全名”].where(df[“certificion”].isnull(),df[“全名”]+,“+df[“certificion”])