pandas 创建一个新列,并通过串联3列来唯一

icomxhvb  于 2023-05-05  发布在  其他
关注(0)|答案(3)|浏览(99)

我想在python中通过串联col1col2col3来创建下面的final concate_col

Col1 col2 col3 concate_col
a     b    b      a,b
c     a    a      c,a
d     a    e      d,a,e

我能够连接这3列,但在每一行中获得唯一的值。
我使用df.str.cat连接

n1bvdmb6

n1bvdmb61#

import pandas as pd

data = {'col1': ['a', 'c', 'd'],
        'col2': ['b', 'a', 'a'],
        'col3': ['b', 'a', 'e']}
df = pd.DataFrame(data)

# Concatenate unique values of col1, col2, and col3 for each row
df['concate_col'] = df.apply(lambda row: ','.join(set(row)), axis=1)

print(df)

结果:

col1 col2 col3 concate_col
0    a    b    b         b,a
1    c    a    a         c,a
2    d    a    e       d,e,a
tvokkenx

tvokkenx2#

df['concate_col'] = df.apply(lambda x: ','.join(set(x)), axis=1)
roqulrg3

roqulrg33#

如果顺序很重要,请使用stack/groupby

df["concate_col"] = df.stack().groupby(level=0).apply(lambda x: ",".join(pd.unique(x)))

agg的另一个变体:

df["concate_col"] = df.agg(lambda x: ",".join(pd.unique(x)), axis=1)

输出:

print(df)

  col1 col2 col3 concate_col
0    a    b    b         a,b
1    c    a    a         c,a
2    d    a    e       d,a,e

相关问题