Python 如果值小于数据帧系列中的先前值

Python 如果值小于数据帧系列中的先前值,python,pandas,dataframe,compare,diff,Python,Pandas,Dataframe,Compare,Diff,这是我从日期中提取日期后的数据帧的外观(请参见最后一列): 在下一步中,如果当前日期

这是我从日期中提取日期后的数据帧的外观(请参见最后一列):

在下一步中,如果当前日期<前一天,我想在另一个名为“Month_End”的列中附加一个真/假标记。这一步是确定月底。如何做到这一点?多谢

到目前为止,我已经尝试了以下内容,但运气不佳(我是一个noob,刚刚开始使用python)

df.iterrows()中的i行的
:
如果df.day.iloc[i+1]

df.assign(Month_End = df.day.diff() < 0)
print(df.head())
df.assign(月底=df.day.diff()<0)
打印(df.head())

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

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
你可以这样做:

from pandas.tseries.offsets import MonthEnd
df['Month_End'] = np.where(pd.to_datetime(df['Date'])== pd.to_datetime(df['Date']) + MonthEnd(0),  True, False)
输出:

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

你想在你的数据中找到真正的月末,还是仅仅是月末的最后一天?事实上,现在我想起来了,在我的数据中,月末的解决方案是行不通的。它错误地排除了我的csv文件中的某些日期,即最后一个交易日与月末不一致的月份。。。有没有其他解决办法?我想做df.dayfrom pandas.tseries.offsets import MonthEnd df['Month_End'] = np.where(pd.to_datetime(df['Date'])== pd.to_datetime(df['Date']) + MonthEnd(0), True, False)
        Date       AAPL      NFLX       INTC  day  Month_End
0 2008-01-02  27.834286  3.764286  25.350000    2      False
1 2008-01-03  27.847143  3.724286  24.670000    3      False
2 2008-01-04  25.721428  3.515714  22.670000    4      False
3 2008-01-07  25.377142  3.554286  22.879999    7      False
4 2008-01-31  24.464285  3.328571  22.260000    8       True