Pandas 按标记记录并应用回原始数据帧

Pandas 按标记记录并应用回原始数据帧,pandas,pandas-groupby,Pandas,Pandas Groupby,下面是一个数据框,其中包含组和一个名为input的列。Id要创建第二列,该列将标记组输入的列的第一次出现,对于组中的其余记录,将其设置为0。以下是一个例子: original_df = pd.DataFrame({'group': ['a','a','a','b','b','c','c','c','c','c','c','c','c'], 'input': [0,1,1,0,0,0,0,0,0,1,1,1,1]}) group

下面是一个数据框,其中包含组和一个名为input的列。Id要创建第二列,该列将标记组输入的列的第一次出现,对于组中的其余记录,将其设置为0。以下是一个例子:

original_df = pd.DataFrame({'group': ['a','a','a','b','b','c','c','c','c','c','c','c','c'], 
                            'input': [0,1,1,0,0,0,0,0,0,1,1,1,1]})

   group  input
0      a      0
1      a      1
2      a      1
3      b      0
4      b      0
5      c      0
6      c      0
7      c      0
8      c      0
9      c      1
10     c      1
11     c      1
12     c      1

desired_df = pd.DataFrame({'group': ['a','a','a','b','b','c','c','c','c','c','c','c','c'], 
                            'input': [0,1,1,0,0,0,0,0,0,1,1,1,1],  
                            'desired_input': [0,1,0,0,0,0,0,0,0,1,0,0,0]})

   group  input  desired_input
0      a      0              0
1      a      1              1
2      a      1              0
3      b      0              0
4      b      0              0
5      c      0              0
6      c      0              0
7      c      0              0
8      c      0              0
9      c      1              1
10     c      1              0
11     c      1              0
12     c      1              0
尝试删除重复项:

将熊猫作为pd导入
作为pd进口熊猫
df=pd.DataFrame(
{'group':['a','a','b','b','c','c','c','c','c','c','c','c'],
“输入”:[0,1,1,1,1,0,0,0,1,1,1]})
df['flag']=df[df['input'].eq(1)]\
.drop_duplicates(['group'],keep='first')['input']
df['flag']=df['flag'].fillna(0).astype(int)
打印(df)
df

   group  input  flag
0      a      0     0
1      a      1     1
2      a      1     0
3      b      1     1
4      b      1     0
5      c      0     0
6      c      0     0
7      c      0     0
8      c      0     0
9      c      1     1
10     c      1     0
11     c      1     0
12     c      1     0

不幸的是,当组之间有连续的1时,此操作失败。幸运的是,结果仍然相同,当组之间有连续的1时,此操作失败。参见示例DF:original_DF=pd.DataFrame({'group':[a','a','a','b','b','c','c','c','c','c','c','c','c'],'input':[0,1,1,1,0,0,0,0,1,1,1]}好的。不同的方法。第一次我不明白你所说的组间连续1是什么意思。请看编辑。