我有一个这样的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
您能建议我如何实现这一目标?
答案 0 :(得分:1)
对由整数除法创建的组使用GroupBy.first
和GroupBy.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]