【问题标题】:How to join/concatenate some set of columns with another or make loop of it?如何将一组列与另一组列连接/连接或使其循环?
【发布时间】:2021-12-26 03:08:00
【问题描述】:

因此,例如,我有 2 列作为 Column1a、Column1b,另外 3 列作为 Column2a、Column2b、Column2c。我想创建一个输出列,其中有一个 Column1a 到 Column2c(如果存在)的数组,如下所示。 输出必须至少存在第 1 列中的一个和第 2 列中的 1 个。

Column1a Column1b  Column2a Column2b Column2c OUTPUT
 123A     QWER     ERTY     1256Y    234
 3456     89AS
 WERT              1234     9087
                   CVBT

输出应该如下:

OUTPUT
["123A|ERTY","123A|1256Y","123A|234","QWER|ERTY","QWER|1256Y","QWER|234]
""
["WERT|1234","WERT|9087"]
""

请帮助我在这种情况下使用循环。谢谢

【问题讨论】:

    标签: python pandas join concatenation nan


    【解决方案1】:

    这是您问题的答案:

    import pandas as pd
    import numpy as np
    # df=pd.read_excel('demo2.xlsx')
    
    all_columns = list(df) # Creates list of all column headers
    df[all_columns] = df[all_columns].astype(str)
    
    from itertools import product
    x=pd.DataFrame(list(product([0,1], [2,3,4])), columns=['l1', 'l2'])
    
    
    for j in range(len(df)):
        full=[]
        if (((df.iloc[j,0]=="nan") & (df.iloc[j,1]=="nan")) | ((df.iloc[j,2]=="nan") & (df.iloc[j,3]=="nan") &(df.iloc[j,4]=="nan")) ):
            full.append("")
        else: 
                l=[]
                for k in range(len(x)):
                    if (df.iloc[j,x.iloc[k,0]]!="nan"):
                        l1=df.iloc[j,x.iloc[k,0]]
                        if (df.iloc[j,x.iloc[k,1]]!="nan"):
                            l2=df.iloc[j,x.iloc[k,1]]
                            full.append(l1+"|"+l2)
        df.loc[j,"OUTPUT"]=full
    

    输出如下所示:

    【讨论】:

    • 你好@Yashar 我用了这个并且得到了这个错误。ValueError: Must have equal len keys and value when setting with an iterable.你能帮忙吗?
    猜你喜欢
    • 2021-12-07
    • 2022-01-01
    • 2022-12-12
    • 2022-01-26
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多