【问题标题】:divide value of next row and create column in dataframe划分下一行的值并在数据框中创建列
【发布时间】:2019-02-04 12:45:04
【问题描述】:

我有一个类似 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,因此在 raise 列中的第一行将有 1
  • 150/100 = 1.5 所以第二行 in raise 列将有 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

我不知道如何创建它,除非使用 for 循环遍历所有 id

并非所有值都具有相同的间隔,这只是一个示例

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    将列除以GroupBy.transform 创建的SeriesGroupBy.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
    

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 2018-04-17
      • 2019-11-06
      • 2021-08-02
      • 2021-12-02
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多