首页 > 解决方案 > 如何在第二行替换相同的值?

问题描述

这可以在 DataFrame Pandas 中做到吗?我只想在同一列上保留第一行值,替换第二行,然后用 0

输入

Name--------Date-------Amount-----Labor  
A--------------1/1/1972-------5-------- 0.3  
A--------------1/1/1972-------5-------- 0.1  
A--------------1/1/1972-------5-------- 0.7  
A--------------1/1/1972-------1-------- 0.3     
B--------------7/2/1980-------1-------- 0.6  
B--------------7/2/1980-------1-------- 0.3  
B--------------7/2/1980-------1-------- 0.7  
C--------------6/9/1965-------4-------- 0.2    
C--------------6/9/1965-------4-------- 0.3  
C--------------6/9/1965-------4-------- 0.4  

输出

Name--------Date-------Amount-----Labor  
A--------------1/1/1972-------5-------- 0.3  
A--------------1/1/1972-------0-------- 0.1  
A--------------1/1/1972-------0-------- 0.7  
A--------------1/1/1972-------0-------- 0.3     
B--------------7/2/1980-------1-------- 0.6  
B--------------7/2/1980-------0-------- 0.3  
B--------------7/2/1980-------0-------- 0.7  
C--------------6/9/1965-------4-------- 0.2    
C--------------6/9/1965-------0-------- 0.3  
C--------------6/9/1965-------0-------- 0.4

标签: pandas

解决方案


尝试:duplicated_np.where

df.Amount = np.where(df.Amount.duplicated(),0, df.Amount)

或与mask

df.Amount = df.Amount.mask(pd.Series.duplicated, 0)

通过where

m = df.Amount.duplicated()
df.Amount = df.Amount.where(~m,0)

输出:

  Name      Date  Amount  Labor  
0    A  1/1/1972       5      0.3
1    A  1/1/1972       0      0.1
2    A  1/1/1972       0      0.7
3    A  1/1/1972       1      0.3
4    B  7/2/1980       0      0.6
5    B  7/2/1980       0      0.3
6    B  7/2/1980       0      0.7
7    C  6/9/1965       4      0.2
8    C  6/9/1965       0      0.3
9    C  6/9/1965       0      0.4

推荐阅读