簡體   English   中英

根據先前的值和其他列替換或排序熊貓數據框列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM