簡體   English   中英

划分下一行的值並在數據框中創建列

[英]divide value of next row and create column in dataframe

我有一個CSV像

id,value
1,100
1,150
1,200
1,250
2,300
2,350
2,400
2,450

我想根據每個唯一ID的值生成一列。

例如:

  • ID 1的前2行的值分別為100、150
  • 我正在嘗試創建列raise將像這樣划分值
  • 100/100 = 1,所以在升高列中的第一行將有1
  • 150/100 = 1.5,所以第二行在提高列中將有2
  • 同樣的ID 2
  • 250/250 = 1和300/250 = 1.166

我取了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循環。

並非所有值都具有相同的間隔,這只是一個示例

GroupBy.transformGroupBy.first列除以Series創建的GroupBy.first

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM