python - 仅当没有 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 函数的几种变体,但我似乎找不到正确的语法。
谢谢
解决方案
+
由于两列都是字符串,因此您可以使用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
推荐阅读
- yaml - 使用 ruamel 使用新字段更新 Yaml 文件
- android - 片段的绘制滞后于我的加载动画
- python - 如何测试分隔 POST 请求的正文和标头的行?
- php - Auth::guard('admin')->user() 总是返回 null
- javascript - iOS 12.2 上以编程方式复制 JavaScript 的问题
- reactjs - React 测试渲染器:findAllByProps 返回在 React Native 中查找 testID 时应该找到的内容的两倍
- nginx-config - 如果我在全局 Magento conf 中包含 location/,如何在特定的 conf 中添加基本身份验证
- php - 一般错误:1215 无法添加外键约束,Laravel 5 & MySQL
- java - 排除 Maven 依赖插件中的依赖
- mysql - 如何在mysql中存储容量编号