代码之家  ›  专栏  ›  技术社区  ›  Dmitriy Kisil

合并两列,忽略空单元格并添加分隔符

  •  1
  • Dmitriy Kisil  · 技术社区  · 7 年前

    我需要合并列 1 和 2 在里面 3 , 我有一个数据框:

             1     2
    0  A, B, B     D
    1           C, D
    2  B, B, C  D, A
    

    并且需要创建列 (期望输出):

             1     2              3
    0  A, B, B     D     A, B, B, D
    1           C, D           C, D
    2  B, B, C  D, A  B, B, C, D, A
    

    正如你在这里看到的,空售被忽略了 , 在df[“3”]中分隔两个元素( B, B, C, D, A ).

    如果我简单地连接 df["1"] + df["2"] BD , CD

             1     2            3
    0  A, B, B     D     A, B, BD
    1           C, D         C, D
    2  B, B, C  D, A  B, B, CD, A
    

    如果添加“,”( df["1"] + ", " + df["2"] ):

             1     2              3
    0  A, B, B     D     A, B, B, D
    1           C, D         , C, D
    2  B, B, C  D, A  B, B, C, D, A
    

    您将看到每个空单元格都替换为“,”并添加到df[“3”](示例= , C, D ,但我需要 C, D ).

    复制代码:

    import pandas as pd
    df = pd.DataFrame({"1":["A, B, B","","B, B, C"], "2":["D","C, D","D, A"]})
    print(df)
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    使用 str.strip 以备可能移除 ,

    (df["1"] + ", " + df["2"]).str.strip(', ')
    
        2
  •  0
  •   Tonz    6 年前

    中间有多个空电池的列如何?

    A|B|C|D|E|F
    1| |3| |5|6
    

    这应产生:

    A|B|C|D|E|F|Full
    1| |3| |5|6|1$3$5$6