用第二行和0替换相同的值

时间:2019-11-16 16:49:58

标签: python pandas

在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 

2 个答案:

答案 0 :(得分:1)

与乘以布尔掩码一样简单。

df['Amount'] *= df['Amount'].ne(df['Amount'].shift())

答案 1 :(得分:1)

,这是可能的。您可以使用.duplicated(..)来构建一个用True标记所有重复项的序列。然后,您可以使用该掩码分配值:

df.loc[df['Amount'].duplicated(), 'Amount'] = 0

或者,如果您只想设置在“ 序列”中重复的值,我们可以使用.diff().eq(0)

df.loc[df['Amount'].diff().eq(0), 'Amount'] = 0