[英]Replacing or sequencing in pandas dataframe column based on previous values and other column
我有一個熊貓df:
date day_of_week day
2021-01-01 3 1
2021-01-02 4 2
2021-01-03 5 0
2021-01-04 6 1
2021-01-05 7 2
2021-01-06 1 3
2021-01-07 2 0
2021-01-08 3 0
我想根據“day_of_week”列值更改“day”列的編號。 例如,如果事件在星期四 (<4) 之前開始,我想對大於 0 的“day”列值使用編號,從 20(而不是 1)開始,等等。 如果事件在星期四開始但在星期一之前(> = 4),我想對大於 0 的值使用編號,從 30(而不是 1)等等。
該表應如下所示:
date day_of_week day
2021-01-01 3 20
2021-01-02 4 21
2021-01-03 5 0
2021-01-04 6 30
2021-01-05 7 31
2021-01-06 1 32
2021-01-07 2 0
2021-01-08 3 0
我嘗試使用np.where
替換值,但我不知道如何遍歷行並根據前一行插入值。
請幫忙!
我們可以使用cumsum
創建組,然后通過transform
每個組的first
天選擇 20 或 30
s = df.groupby(df['day'].eq(1).cumsum())['day_of_week'].transform('first')
df['day'] = df.day.where(df.day==0, df.day + np.where(s<4,19,29))
df
Out[16]:
date day_of_week day
0 2021-01-01 3 20
1 2021-01-02 4 21
2 2021-01-03 5 0
3 2021-01-04 6 30
4 2021-01-05 7 31
5 2021-01-06 1 32
6 2021-01-07 2 0
7 2021-01-08 3 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.