如何在一个月的最后一周加1并在熊猫数据框中填充为0?

时间:2018-10-10 01:44:05

标签: pandas dataframe

我具有以下数据框,我需要在该月和该年的最后一周填充1,在同一年和一年中将其余周填充为0

df:

date        total
02/01/00    28.000568
09/01/00    28.000568
16/01/00    28.000568
23/01/00    28.000568
30/01/00    28.000568
06/02/00    12.500612
13/02/00    12.500612

输出:

date        total         flg
02/01/00    28.000568     0
09/01/00    28.000568     0
16/01/00    28.000568     0
23/01/00    28.000568     0
30/01/00    28.000568     1
06/02/00    12.500612     0
13/02/00    12.500612     0

请您提出建议。

1 个答案:

答案 0 :(得分:1)

转换为datetime,然后查找月份在行与行之间的变化:

d = pd.to_datetime(df['date'],dayfirst=True).dt.month

df['flag'] = d.ne(d.shift(-1)).astype(int)

>>> df
       date      total  flag
0  02/01/00  28.000568     0
1  09/01/00  28.000568     0
2  16/01/00  28.000568     0
3  23/01/00  28.000568     0
4  30/01/00  28.000568     1
5  06/02/00  12.500612     0
6  13/02/00  12.500612     1

请注意,我是分开进行的,以免更改数据框中的date格式。您也可以就地进行:

df['date'] = pd.to_datetime(df['date'],dayfirst=True)

df['flag'] = df['date'].dt.month.ne(df['date'].dt.month.shift(-1)).astype(int)

还请注意,即使最后一行不在您期望的输出中,也将对其进行标记。从技术上讲,这是第二个月的最后一个条目