Python 仅当数据帧中没有列为NaN时,如何连接数据帧中两列的值
我试图在一个数据帧内的一个新列中连接两个字符串,但尝试了几种方法,但都不起作用,最近的一种方法是使用lambda公式,但仍然无法理解这个问题。有人能帮忙吗 数据帧: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
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”])
。