python - 将数据框列添加在一起,由考虑 NaN 的列分隔
问题描述
为了避免连续的逗号,如何从新列中完全省略 NaN 值?
df['newcolumn'] = df.apply(''.join, axis=1)
一种方法可能是使用条件 lambda
df.apply(lambda x: ','.join(x.astype(str)) if(np.isnan(x.astype(str))) else '', axis = 1)
但这会返回一条错误消息:
TypeError:(“输入类型不支持 ufunc 'isnan',根据强制转换规则 ''safe'' 无法安全地将输入强制转换为任何支持的类型”,'发生在索引 0')
编辑: 您的两个答案都有效。为了获得答案,我将使用什么标准来确定要编码哪一个?性能考虑?
解决方案
您可以使用stack
,因为它会NaN
默认删除
df.stack().groupby(level=0).apply(','.join)
Out[552]:
0 a,t,y
1 a,t
2 a,u,y
3 a,u,n
4 a,u
5 b,t,y
dtype: object
数据输入
df
Out[553]:
Mary John David
0 a t y
1 a t NaN
2 a u y
3 a u n
4 a u NaN
5 b t y
推荐阅读
- c# - 如何使用按钮关闭所有加载的表单
- azure-functions - Azure 函数配置对象缓存问题
- javascript - JQuery DataTables 不保存状态
- python - 在 Python 中读取 .ini 文件
- npm - npm 错误!代码 ENOLOCAL npm 错误!无法安装从
- windows - 为什么我的 VcXsrv 崩溃并显示“XIO:X 服务器上的致命 IO 错误 110(连接超时)”
- python - 虚拟机解决方案中的 PYAUTOGUI
- ruby-on-rails - Capybara 随机抛出验证错误
- python - ctx.bot.get_user 在 discord.py 中无法在 ctx 中使用
- excel - 如何在同一列中的多个工作表中求和和减法?