仅当 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'])
我正在尝试将两个字符串连接到 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'])