我有这个日期的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/