如何在python数据帧中为每列保存最大行值?

如何在python数据帧中为每列保存最大行值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,如: Name A B C 0 Sen 1 0 NaN 1 Kes 0 1 0 2 Pas 0 0 1 3 Sen 0 0 NaN 4 Pas 0 0 2 我想用一条规则分别删除每个列的重复项: 名称列是键 例如,Sen是重复的,但其值仅在A中更改,对于B&C,其值是相同的。因此,对于A,我希望执行OR运算,并将Sen A的值保留为1,在另一行中,它应该填充“Nan” 基本上,我不想删除整行

我有一个数据帧,如:

   Name  A   B   C
0  Sen   1   0   NaN
1  Kes   0   1   0
2  Pas   0   0   1
3  Sen   0   0   NaN
4  Pas   0   0   2

我想用一条规则分别删除每个列的重复项:

名称列是键

例如,Sen是重复的,但其值仅在A中更改,对于B&C,其值是相同的。因此,对于A,我希望执行OR运算,并将Sen A的值保留为1,在另一行中,它应该填充“Nan”

基本上,我不想删除整行以进行复制,而是修改所有列的每个列内的值

预期产出:

   Name  A     B   C
0  Sen   1     0   NaN
1  Kes   0     1   0
2  Pas   0     0   Nan
3  Sen   Nan   0   NaN
4  Pas   0     0   2


我们可以使用
where

s=df.groupby('Name').max().reindex(df.Name).values
df.drop('Name',1).where(df.drop('Name',1)==s)
     A  B    C
0  1.0  0  NaN
1  0.0  1  0.0
2  0.0  0  NaN
3  NaN  0  NaN
4  0.0  0  2.0
#df.loc[:,'A':]=df.drop('Name',1).where(df.drop('Name',1)==s)

但是如果我想保留“Name”列怎么办?@hakuna_code注意到了我的屏蔽线
df.loc[:,'A':]=df.drop('Name',1)。其中(df.drop('Name',1)==s)
df.drop('Name',1)。其中(df.drop('Name',1)==s)失败,错误为“无法使用块值[(8007,11)]广播形状[(8007,10)]”。。。我有从A到B的专栏K@hakuna_code什么错误,你试过你的样品了吗?是的。。但更高维度的失败。。。但理想情况下,它应该以同样的方式工作,对吗?