将多列合并为一列,删除一行中的重复项并删除 nan 值

Merge multiple columns into one, dropping duplicates across a row and removing nan values

我正在尝试将多个列合并为一个列,同时删除重复项和空值但保留行。我有:

Index  |   A  |  B  | C
0      |  nan | nan | nan
1      |   1  |  1  | nan
2      |   x  |  2  | nan

我需要的:

Index  |   New_col  
0      |   
1      |   1  
2      |   x,2  

我尝试过的:

df= pd.DataFrame(np.array([['nan', 'nan', 'nan'], ['nan', 1, 1], ['nan', 'x', 2]]), columns=['A', 'B', 'C'])

df['a]=df[['a','b','c]].agg(', '.join, axis=1) 

也尝试过:.stack().unstack() 和 .join,但我无法让它们按行删除重复项。

不确定 set 是否保留传入元素的顺序,但我们可以将一些操作链接在一起

import pandas as pd
import numpy as np
from io import StringIO

df = pd.read_csv(StringIO(
"""A|B|C
||
1|1|
x|2|"""), sep="|", dtype="object")

>>> df.apply(lambda x: ",".join(set([str(i) for i in x if pd.notnull(i)])), axis=1)
0
1      1
2    x,2
dtype: object