【发布时间】:2020-11-16 08:26:38
【问题描述】:
我是 python 新手。
我遇到了一个问题,我需要在数据框中创建一个新列,这取决于同一数据框中的其他列但不同的行。
df = pd.DataFrame({"Year":[2011,2014,2012,2013],"Value1":[10,40,20,30],"Value2":[10,100,30,60]})
df
Year Value1 Value2 Product
0 2011 10 10 1
1 2014 40 100 1
2 2012 20 30 1
3 2013 30 60 1
4 2011 10 10 2
5 2014 40 100 2
6 2012 20 30 2
7 2013 30 60 2
8 2011 10 10 3
9 2014 40 100 3
10 2012 20 30 3
11 2013 30 60 3
我想在今年和去年的基础上创建一个新列,新列 value3 应该成为这个和去年 value1 和 value2 之间差异的商,例如,2012 年行的 value3 应该由 (30-10)/(20-10) = 2 计算。
所以我预期的新数据框应该如下所示:
Year Value1 Value2 Product Value3
0 2011 10 10 1 NaN
1 2014 40 100 1 4.0
2 2012 20 30 1 2.0
3 2013 30 60 1 3.0
4 2011 10 10 2 NaN
5 2014 40 100 2 4.0
6 2012 20 30 2 2.0
7 2013 30 60 2 3.0
8 2011 10 10 3 NaN
9 2014 40 100 3 4.0
10 2012 20 30 3 2.0
11 2013 30 60 3 3.0
有人可以帮我吗?
我尝试使用 for 循环来获取每一行数据帧,但我发现很难获取去年的数据,因为它没有排序。
【问题讨论】:
-
您说 2012 年的 value3 应该是 2,但您的预期输出是 3?
-
尝试 DataFrame - apply() 函数
-
对不起,我已经改变了我的预期输出