首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组合数据帧的列

组合数据帧的列
EN

Stack Overflow用户
提问于 2020-12-18 13:52:23
回答 3查看 42关注 0票数 1

我正在尝试组合数据帧的列,如下所示

代码语言:javascript
复制
df['new'] = df['a'].astype(str) + ':' + df.b.astype(str) + ' ' + df.c.astype(str)

当名为a/b/c的列中的某些条目为空时,它会给出

代码语言:javascript
复制
df['new']=

sfg nan nan
nan nan nan

我想知道如何避免nan的问题。相反,我更喜欢把它留空。

我们将非常感谢您的建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-12-18 13:59:23

只有fillna()会帮你

代码语言:javascript
复制
df = df.fillna('')
df['new'] = df['a'].astype(str) + ':' + df.b.astype(str) + ' ' + df.c.astype(str)
票数 1
EN

Stack Overflow用户

发布于 2020-12-18 13:59:46

您可以围绕连接创建一个常规函数

代码语言:javascript
复制
import pandas as pd

def concat_columns(inp,delimiter=':'):
    
    try:
        res = f'{delimiter}'.join(inp.values)
    except Exception:
        return ' '
    
     return res
代码语言:javascript
复制
df['new'] = df[['a','b','c']].apply(concat_columns,axis=1)
票数 2
EN

Stack Overflow用户

发布于 2020-12-18 13:56:19

您可以尝试替换nan字符串。另外,使用apply可以让代码更简洁一些:

代码语言:javascript
复制
df['new'] = (df[['a','b','c']].astype(str)
                 .replace('nan', '')
                 .apply(lambda x: x['a'] + ':' + x['b'] + ' ' + x['c'], 
                        axis=1)
            )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65352366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档