在数据框中联接多个列

时间:2020-10-15 10:33:10

标签: python pandas dataframe

我正在处理一个数据框,其中需要将多个列合并为一个。狗的名称位于不同的列(doggo,floofer,pupper和puppo)中,我希望能够将它们合并为新的列名“ dog_type”,并选择具有值的列。在“ doggo”列下为“ doggo”的地方,应在新列“ dog_type”下返回相同的内容。预先谢谢你。

[更新]从下面@Elda的答案中得到启发,这就是我要实现的目标。我仅需要选择“ doggo”列的值具有“ doggo”值的地方来帮助。谢谢大家的帮助。

import pandas as pd
df = pd.DataFrame({'doggo': ['None', 'None', 'None', 'doggo'],
                   'floofer': ['None', 'floofer', 'None', 'None'],
                    'pupper':['None', 'None', 'None', 'pupper'],
                    'puppo':['None', 'None', 'None', 'None']})

df['dog_type'] = df[df.columns[0:]].apply(lambda x: ','.join(x.dropna().astype(str)),
    axis=1)
df   

1 个答案:

答案 0 :(得分:0)

您可以这样做:

 import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'doggo': ['None', 'None', 'None', 'doggo'],
                       'floofer': ['None', 'floofer', 'None', 'None'],
                        'pupper':['None', 'None', 'None', 'pupper'],
                        'puppo':['None', 'None', 'None', 'None']})
    
    df[0:4].replace('None', np.nan, inplace=True)
    
    df['dog_type'] = df[df.columns[0:]].apply(lambda x: ','.join(x.dropna().astype(str)),
    axis=1)
    
    df

输出:

enter image description here