我有这个大熊猫数据框的日期,我想要增加一个列值,我称之为"月中",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直到结束。
至少对我来说有点挑战。
感谢您的帮助
答案 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