我正在处理一个数据框,其中需要将多个列合并为一个。狗的名称位于不同的列(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
答案 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
输出: