我有一个熊猫数据框:

>>df_freq = pd.DataFrame([["Z11", "Z11", "X11"], ["Y11","",""], ["Z11","Z11",""]], columns=list('ABC'))

>>df_freq
    A   B   C
0   Z11 Z11 X11
1   Y11
2   Z11 Z11

我想确保每一行只有唯一的值因此它应该是这样的:移除的值可以替换为零或空
    A   B   C
0   Z11 0   X11
1   Y11
2   Z11 0

我的数据框很大,有成百上千的列和行。目标是计算该数据帧中的唯一值。我通过将数据帧转换为矩阵并应用
>>np.unique(mat.astype(str), return_counts=True)

但在某些行中会出现相同的值,我想在应用np.unique()方法之前删除它我想在每行中保留唯一的值。

最佳答案

使用astype(bool)duplicated的组合

mask = df_freq.apply(pd.Series.duplicated, 1) & df_freq.astype(bool)

df_freq.mask(mask, 0)

     A  B    C
0  Z11  0  X11
1  Y11
2  Z11  0

10-04 16:02