根据每n行第一个出现的熊猫修改列值

时间:2019-07-05 08:33:44

标签: python pandas

我有一个这样的dataFrame

ID,A,B
1,Fruit,Orange
1,Fruit,Apple
3,Fruit,Mango
4,Fruit,Banana
5,Fruit,PineApple
5,Fruit,Grapes

我想以每3行修改一个共享ID的方式。我要应用的ID是每3行中第一个ID出现。

输出应为

ID,A,B
1,Fruit,Orange
1,Fruit,Apple
1,Fruit,Mango
4,Fruit,Banana
4,Fruit,PineApple
4,Fruit,Grapes

您能建议我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

对由整数除法创建的组使用GroupBy.firstGroupBy.transform

#if default RangeIndex
#df['ID'] = df.groupby(df.index // 3)['ID'].transform('first')
#general solution
df['ID'] = df.groupby(np.arange(len(df)) // 3)['ID'].transform('first')
print (df)
   ID      A          B
0   1  Fruit     Orange
1   1  Fruit      Apple
2   1  Fruit      Mango
3   4  Fruit     Banana
4   4  Fruit  PineApple
5   4  Fruit     Grapes

详细信息

print (np.arange(len(df)) // 3)
[0 0 0 1 1 1]