Python 熊猫数据框检查前一天的新列
我有一个Dataframe,它有一个Datetime作为索引,还有一个名为“Holiday”的列,它是一个带有1或0的标志 因此,如果datetimeindex是假日,则假日列中有1,如果不是,则为0 我需要一个新列来说明给定的datetimeindex是否为假日后的第一天。新列应该只查看其前一天的标志“假日”是否设置为1,然后将其标志设置为1,否则为0 编辑 做:Python 熊猫数据框检查前一天的新列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个Dataframe,它有一个Datetime作为索引,还有一个名为“Holiday”的列,它是一个带有1或0的标志 因此,如果datetimeindex是假日,则假日列中有1,如果不是,则为0 我需要一个新列来说明给定的datetimeindex是否为假日后的第一天。新列应该只查看其前一天的标志“假日”是否设置为1,然后将其标志设置为1,否则为0 编辑 做: df['DayAfter'] = df.Holiday.shift(1).fillna(0) 具有以下输出:
df['DayAfter'] = df.Holiday.shift(1).fillna(0)
具有以下输出:
Holiday DayAfter AnyNumber
Datum
...
2014-01-01 20:00:00 1 1.0 9
2014-01-01 20:30:00 1 1.0 2
2014-01-01 21:00:00 1 1.0 3
2014-01-01 21:30:00 1 1.0 3
2014-01-01 22:00:00 1 1.0 6
2014-01-01 22:30:00 1 1.0 1
2014-01-01 23:00:00 1 1.0 1
2014-01-01 23:30:00 1 1.0 1
2014-01-02 00:00:00 0 1.0 1
2014-01-02 00:30:00 0 0.0 2
2014-01-02 01:00:00 0 0.0 1
2014-01-02 01:30:00 0 0.0 1
...
如果您检查2014-01-02的第一个时间戳,则DayAfter标志设置正确。但其他标志是0。这是错误的。创建一个独特的假日数组,并将其抵消一天
days = pd.Series(df[df.Holiday == 1].index).add(pd.DateOffset(1)).dt.date.unique()
创建一个包含一天假期偏移量(days
)的新列
df['dayafter']=df.HOLIDAY.shift(1)
它将0写为“NaN”@DJKdf.HOLIDAY.shift(1).fillna(0)?谢谢!但是结果是错误的。顺便说一句:datetime有它的时间。shift只检查pre-dadetime值,我需要它只检查日期而不检查表中的时间stamp@Meiiso,很乐意帮忙
df['DayAfter'] = np.where(pd.Series(df.index).dt.date.isin(days),1,0)
Holiday AnyNumber DayAfter
Datum
2014-01-01 20:00:00 1 9 0
2014-01-01 20:30:00 1 2 0
2014-01-01 21:00:00 1 3 0
2014-01-01 21:30:00 1 3 0
2014-01-01 22:00:00 1 6 0
2014-01-01 22:30:00 1 1 0
2014-01-01 23:00:00 1 1 0
2014-01-01 23:30:00 1 1 0
2014-01-02 00:00:00 0 1 1
2014-01-02 00:30:00 0 2 1
2014-01-02 01:00:00 0 1 1
2014-01-02 01:30:00 0 1 1