我有这个日期的pandas数据框,我想在该日期的每个月的第14天将列值(我称为“月中旬”)增加1,例如:

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直到最后。

至少对我来说有点挑战。

谢谢你的帮助

最佳答案

您可以使用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

关于python - 根据日期增加 Pandas 数据框列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49195188/

10-12 16:50
查看更多