python - 如果值小于 Pandas 数据框系列中的先前值

标签 python pandas dataframe compare diff

这是从日期中提取日期后我的数据框的样子(见最后一列):

        Date       AAPL      NFLX       INTC  day
0 2008-01-02  27.834286  3.764286  25.350000    2
1 2008-01-03  27.847143  3.724286  24.670000    3
2 2008-01-04  25.721428  3.515714  22.670000    4
3 2008-01-07  25.377142  3.554286  22.879999    7
4 2008-01-08  24.464285  3.328571  22.260000    8

对于我的下一步,如果当前日期 < 前一天,我想附加另一个名为“Month_End”的列,并带有真/假标记。这一步是识别月末。这个怎么做?非常感谢。

到目前为止,我已经尝试过以下方法(我是菜鸟,刚开始使用 python)

for i, row in df.iterrows():
        if df.day.iloc[i+1] < df.day.iloc[i]:
            print (df['day'])

df.assign(Month_End = df.day.diff() < 0)
print(df.head())

最佳答案

您可以直接将日期与 MonthEnd 进行比较,看看它是否为 True

from pandas import offsets
df['Month_End'] = df.Date == df.Date+offsets.MonthEnd(0)

例子:

df:

        Date       AAPL      NFLX       INTC  day
0 2008-01-02  27.834286  3.764286  25.350000    2
1 2008-01-03  27.847143  3.724286  24.670000    3
2 2008-01-04  25.721428  3.515714  22.670000    4
3 2008-01-07  25.377142  3.554286  22.879999    7
4 2008-01-08  24.464285  3.328571  22.260000    8
5 2008-01-31  24.464285  3.328571  22.260000   31
6 2008-02-28  24.464285  3.328571  22.260000   28
7 2008-02-29  24.464285  3.328571  22.260000   29
8 2009-02-28  24.464285  3.328571  22.260000   28

from pandas import offsets
df.Date == df.Date + offsets.MonthEnd(0)

0    False
1    False
2    False
3    False
4    False
5     True
6    False
7     True
8     True
Name: Date, dtype: bool

关于python - 如果值小于 Pandas 数据框系列中的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975313/

相关文章:

python - 在 Python 的 C 扩展中调用 C 函数

python - If 条件比较 Python 中的两个数据帧

python - Pandas read_fwf 没有加载文件的全部内容

返回每组条件行的第一个值更改

python - 根据所有列值在 pandas 中选择一行

Python SSL wrap_socket 失败,出现 SSLError,Errno 336265218

python - 给定均值和标准差生成高斯核

python - 在 pandas 数据框中使用查询语句选择列

python - 比较 2 个数据帧以获得另一个数据帧

python - Pandas:InvalidIndexError:重新索引仅对具有唯一值的索引对象有效