将列的值放入新列,并检查其他列中是否重复,如果其他列重复,则在值列中打印状态颜色

zte4gxcn  于 2022-10-23  发布在  其他
关注(0)|答案(2)|浏览(127)

我有一列a、B、C、D a列的值为x1、x2、x3、x4、x5,创建一列x1、x2、x3,x4、x5,如果B、C和D有重复,则打印1
请使用pyspark或pythonPandas提供答案
输入

A   B   C   D  status_color

X1  a   b   c   red

X2  a   a   b   green

X3  a   a   b    red

X4  a   b   c   green

输出

B   C   D   X1  X2  X3  X4

a   b   c   red 0   0   green

a   a   b   0   green   red 0

我试图找到列的重复项,然后创建一个列重复标记,如果其他列重复df['duplicate_flag']=df.duplicated(subset['B','C','D']),则打印status_color
我的问题是,我不知道如何将其与列A进行比较,并将其打印在X1、X2、X3、X4中
有人能帮上python吗?我是python的新手

fv2wmkja

fv2wmkja1#

使用groupby+str.get_dummies:

group = df.groupby(["B", "C", "D"], sort=False).agg("|".join)
res = group["A"].str.get_dummies().reset_index()
print(res)

输出

B  C  D  X1  X2  X3  X4
0  a  a  b   0   1   1   0
1  a  b  c   1   0   0   1
rryofs0p

rryofs0p2#

使用pandas.crosstab

out = (pd.crosstab([df['B'], df['C'], df['D']], df['A'])
         .clip(upper=1) # only if you expect duplicates
         .reset_index().rename_axis(columns=None)
       )

输出:

B  C  D  X1  X2  X3  X4
0  a  a  b   0   1   1   0
1  a  b  c   1   0   0   1

相关问题