根据日期增加Pandas Dataframe列

时间:2018-03-09 13:46:07

标签: python pandas datetime dataframe

我有这个大熊猫数据框的日期,我想要增加一个列值,我称之为"月中",1 每月14日,如:

date        day_of_month mid_month_id
2004-05-12            12            5
2004-05-13            13            5
2004-05-14            14            6
2004-05-15            15            6

直到......时间的结束(让我们把它放在2020-12-31)。

但我现在拥有的是:

date        day_of_month  mid_month_id
2004-05-12            12  xxx
2004-05-13            13  xxx
2004-05-14            14  xxx
2004-05-15            15  xxx

我进行了子集化和应用:

df_test = df.loc[:,['day_of_month', 'mid_month_id']]

# Let's start at mid_month_id 7
m = 7


for i, row in df_test.iterrows():
    if df_test.loc[i, 'day_of_month'] < 14 and df_test.loc[i, 'mid_month_id'] == "xxx":
        df_test.loc[i, 'mid_month_id'] = m;
    if df_test.loc[i, 'day_of_month'] >= 14 and df_test.loc[i, 'mid_month_id'] == "xxx":
        df_test.loc[i, 'mid_month_id'] = m + 1;
    m = m + 1

df_test

它返回了从一天到下一天的增量,而不是。

然后,我尝试没有 m = m + 1 ,因此值为7和8直到结束。

至少对我来说有点挑战。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您可以使用cumsum在数据集中尝试类似的操作。

m=7
df_test['mid_month_id'] = m+(df.day_of_month == 14).cumsum()

print(m + (df.day_of_month == 14).cumsum()) 

输出:

0    7
1    7
2    8
3    8
4    8
5    8
6    9
7    9
Name: day_of_month, dtype: int32