Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除存在重复行的列(分组)。熊猫_Python_Pandas - Fatal编程技术网

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