pandas 中上一行和下一行之间的差异给出了第一个值的 NaN

Difference between previous row and next row in pandas gives NaN for first value

提问人:David Jackson 提问时间:4/19/2020 更新时间:4/19/2020 访问量:94

问:

我是使用 Pandas 的新手,我有一个数据帧 df,如下所示


    A   B
0   4   5
1   5   8
2   6   11
3   7   13
4   8   15
5   9   30
6   10  477
7   11  3643
8   12  33469
9   13  141409
10  14  335338
11  15  365115

我想了解 B 列的上一行和下一行之间的差异 我使用了 df.set_index('B').diff(),但它为第一行提供了 NaN。如何获得 5 个?

A   B   
4   NaN
5   3.0
6   3.0
7   2.0
8   2.0
9   15.0
10  447.0
11  3166.0
12  29826.0
13  107940.0
14  193929.0
15  29777.0
Pandas 数据帧

评论

0赞 Björn 4/19/2020
为什么要覆盖 b 列?您正在获得第一行,因为它没有前一行。NaN
0赞 David Jackson 4/19/2020
我想保留第一行的价值并产生其他人的差异

答:

1赞 BENY 4/19/2020 #1

让我们来做

df.B.diff().fillna(df.B)
0          5.0
1          3.0
2          3.0
3          2.0
4          2.0
5         15.0
6        447.0
7       3166.0
8      29826.0
9     107940.0
10    193929.0
11     29777.0
Name: B, dtype: float64

评论

0赞 David Jackson 4/19/2020
它在错误的列中产生以下结果 4,1,1,1,1
0赞 BENY 4/19/2020
@Himavari检查您的样本数据,以及我的输出,我认为您的样本数据与您拥有的不匹配