新的dataframe列,用于计算某列中具有特定值的行,并且具有相同的Customer ID列,并且少于日期和时间

时间:2019-12-02 00:32:49

标签: python pandas dataframe group-by

编辑

我想添加一个称为prev_message_left的新列,该列计算为否。每个ID的messages_left个数小于给定时间之前的日期。基本上,我想有一列来说明在当前时间和日期之前,我们有多少次给客户打电话留言。这就是我的数据框的样子

date       ID   call_time   message_left  
20191101    1        8:00              0
20191102    2        9:00              1
20191030    1       16:00              1
20191103    2       10:30              1
20191105    2       14:00              0
20191030    1       15:30              0

我想添加一列称为prev_message_left_count

date       ID   call_time   message_left  prev_message_left_count
20191101    1        8:00              0                        1
20191102    2        9:00              1                        0
20191030    1       16:00              1                        0
20191103    2       10:30              1                        1
20191105    2       14:00              0                        2
20191030    1       15:30              0                        0

我的数据框有15列和9万行。
我在此数据框中还有其他各种列,并且有“ No Message Left”(无消息遗留),“ Responded”(已响应)之类的列,我将不得不为这些列计算称为“ Previous_no_message_left”和“ prev_responded”的其他列,类似于“ prev_message_left”

1 个答案:

答案 0 :(得分:1)

IIUC cumcountsort_values之后

df['pervious']=df.sort_values(['date','call_time']).groupby('ID').cumcount()
df
       date  ID call_time  message_left  pervious
0  20191101   1      8:00             0         2
1  20191102   2      9:00             1         0
2  20191030   1     16:00             1         1
3  20191103   2     10:30             1         1
4  20191105   2     14:00             0         2
5  20191030   1     15:30             0         0