在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
答案 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