我想创建一个新列diff
,用于区分另一列中的系列。
以下是我的 Dataframe :
df=pd.DataFrame({
'series_1' : [10.1, 15.3, 16, 12, 14.5, 11.8, 2.3, 7.7,5,10],
'series_2' : [9.6,10.4, 11.2, 3.3, 6, 4, 1.94, 15.44, 6.17, 8.16]
})
它具有以下显示:
series_1 series_2
0 10.1 9.60
1 15.3 10.40
2 16.0 11.20
3 12.0 3.30
4 14.5 6.00
5 11.8 4.00
6 2.3 1.94
7 7.7 15.44
8 5.0 6.17
9 10.0 8.16
- 目的**
则会得到以下输出:
series_1 series_2 diff_2
0 10.1 9.60 NaN
1 15.3 10.40 0.80
2 16.0 11.20 0.80
3 12.0 3.30 -7.90
4 14.5 6.00 2.70
5 11.8 4.00 -2.00
6 2.3 1.94 -2.06
7 7.7 15.44 13.50
8 5.0 6.17 -9.27
9 10.0 8.16 1.99
- 我的代码**
为了达到所需的输出,我使用了以下代码,它工作了:
diff_2=[np.nan]
l=len(df)
for i in range(1, l):
diff_2.append(df['series_2'][i] - df['series_2'][i-1])
df['diff_2'] = diff_2
- 我的代码有问题**
我在这里复制了一个简化的 Dataframe ,我正在处理的真正的 Dataframe 非常大,我的代码几乎花了9分钟的运行时间!
我希望有一种替代方法,允许我以快速的方式获得输出,
如果您有任何建议,我们将不胜感激,谢谢。
2条答案
按热度按时间ljo96ir51#
这里有一种方法,使用diff
第一个
2vuwiymt2#
您可能需要添加以下代码行:
实现目标输出:
这是一个内置的
pandas
特性,因此应该对其进行优化以获得良好的性能。