Python 如果值小于数据帧系列中的先前值
这是我从日期中提取日期后的数据帧的外观(请参见最后一列): 在下一步中,如果当前日期<前一天,我想在另一个名为“Month_End”的列中附加一个真/假标记。这一步是确定月底。如何做到这一点?多谢 到目前为止,我已经尝试了以下内容,但运气不佳(我是一个noob,刚刚开始使用python) df.iterrows()中的i行的Python 如果值小于数据帧系列中的先前值,python,pandas,dataframe,compare,diff,Python,Pandas,Dataframe,Compare,Diff,这是我从日期中提取日期后的数据帧的外观(请参见最后一列): 在下一步中,如果当前日期
:
如果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