将多列合并为一列,删除一行中的重复项并删除 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
我正在尝试将多个列合并为一个列,同时删除重复项和空值但保留行。我有:
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