我有一个类似csv的
id,value
1,100
1,150
1,200
1,250
2,300
2,350
2,400
2,450
我想根据每个唯一ID的值生成一列。
例如:
raise
,该列将像这样划分值我取了100,因为它是该
id
的第一个值,与第二个'id'相同 例如:
id,value
1,150
1,100
1,200
1,250
如果是这种情况,则输出应该是
id,value,raise
1,150,150/150
1,100,100/150
1,200,200/150
1,250,250/150
所以最终我的输出将是
id value raise
0 1 100 1.000
1 1 150 1.500
2 1 200 2.000
3 1 250 2.500
4 2 300 1.000
5 2 350 1.166
6 2 400 1.333
7 2 450 1.500
除了在所有id
中使用for循环外,我不知道如何创建它。
并非所有值都具有相同的间隔,这只是一个示例
答案 0 :(得分:4)
由GroupBy.transform
与GroupBy.first
创建的Series
划分列:
df['raise'] = df['value'].div(df.groupby('id')['value'].transform('first'))
print (df)
id value raise
0 1 100 1.000000
1 1 150 1.500000
2 1 200 2.000000
3 1 250 2.500000
4 2 300 1.000000
5 2 350 1.166667
6 2 400 1.333333
7 2 550 1.833333