Python 删除存在重复行的列(分组)。熊猫
我需要在Python 删除存在重复行的列(分组)。熊猫,python,pandas,Python,Pandas,我需要在Name组中显示内部只有重复行的列 我无法删除/删除一个groupo的列,因为对于其他groupo,此特定列可能有用。 因此,当特定列中有重复项时,我需要将此列设为空(例如,替换为np.nan) 我的df: Name,B,C,D Adam,20,dog,cat Adam,20,cat,elephant Katie,21,cat,cat Katie,21,cat,dog Brody,22,dog,dog Brody,21,cat,dog 预期产出: #grouping by Name,
Name
组中显示内部只有重复行的列
我无法删除/删除一个groupo的列,因为对于其他groupo,此特定列可能有用。
因此,当特定列中有重复项时,我需要将此列设为空(例如,替换为np.nan)
我的df:
Name,B,C,D
Adam,20,dog,cat
Adam,20,cat,elephant
Katie,21,cat,cat
Katie,21,cat,dog
Brody,22,dog,dog
Brody,21,cat,dog
预期产出:
#grouping by Name, always two Names are same, not less not more.
Name,B,C,D
Adam,np.nan,dog,cat
Adam,np.nan,cat,elephant
Katie,np.nan,np.nan,cat
Katie,np.nan,np.nan,dog
Brody,22,dog,np.nan
Brody,21,cat,np.nan
我知道我应该使用groupby()
函数和duplicated()
但我不知道这种方法应该是什么样子
output=df[df.duplicated(keep=False)].groupby('Name')
output=output.replace({True:'np.nan'},regex=True)
与lambda功能一起使用并用于更换:
df = df.set_index('Name')
output=df.mask(df.groupby('Name').transform(lambda x: x.duplicated(keep=False))).reset_index()
print (output)
Name B C D
0 Adam NaN dog cat
1 Adam NaN cat elephant
2 Katie NaN NaN cat
3 Katie NaN NaN dog
4 Brody 22.0 dog NaN
5 Brody 21.0 cat NaN
你是我的尤达,我想和你一样:D