如何在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什么错误,你试过你的样品了吗?是的。。但更高维度的失败。。。但理想情况下,它应该以同样的方式工作,对吗?