在没有for循环的情况下比较行的数据帧迭代

2024-10-03 23:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图比较每年的国内生产总值(GDP)值,以便在我的数据中找出衰退的位置。在

    GDP in billions of current dollars  GDP in billions of chained 2009 dollars
Quarterly (Seasonally adjusted annual rates)        
1947q1  243.1   1934.5
1947q2  246.3   1932.3
1947q3  250.1   1930.3
1947q4  260.3   1960.7
1948q1  266.2   1989.5

这是我的数据的.head()。我在对比“2009年数十亿美元的GDP”,找出负增长的季度

目前,我已经遍历了该列并创建了一个列表以供以后追加。我意识到这可能是一个糟糕的方法,我想知道是否有人可以帮助我改进我的代码:

^{pr2}$

代码与条目1有一个问题,因为它在开始时没有任何东西可以与它(因此是《卫报》代码)进行比较,这不是一个大问题,因为我们可以告诉它以“False”开头

我可以将列表附加到数据帧并继续,但我目前正在学习Pandas,如果可能的话,我希望使用向量化正确地完成这项工作


Tags: of数据代码in列表currentchainedgdp
1条回答
网友
1楼 · 发布于 2024-10-03 23:23:04

IIUC可以使用矢量化Series.diff()方法:

In [86]: df.iloc[:, 2].diff().lt(0)
Out[86]:
0    False
1     True
2     True
3    False
4    False
Name: c, dtype: bool

如果您需要一个普通Python列表:

^{pr2}$

来源数据:

In [87]: df
Out[87]:
        a      b       c
0  1947q1  243.1  1934.5
1  1947q2  246.3  1932.3
2  1947q3  250.1  1930.3
3  1947q4  260.3  1960.7
4  1948q1  266.2  1989.5

差异

In [88]: df['c'].diff()
Out[88]:
0     NaN
1    -2.2
2    -2.0
3    30.4
4    28.8
Name: c, dtype: float64

相关问题 更多 >