我有一個帶有日期和 ID(已排序)的數(shù)據(jù)框。> date id newid (expected result)> 2019-01-01 10:00 1 20190101000001-A> 2019-01-01 11:00 1 20190101000002-A> 2019-01-01 12:00 1 20190101000003-A> 2019-01-01 19:00 2 20190101000001-A> 2019-01-02 09:00 2 20190102000001-A> 2019-01-02 10:00 2 20190102000002-A> 2019-01-05 15:00 3 20190103000001-Adef create_new_id(params): if (previous_date != recent_date) or (previous_id != recent_id): new_id = 'date000001-A' if (previous_date == recent_date) and (previous_id == recent_id): new_id = previous_new_id + 1# (change date000001-A to date000002-A) return new_id作為示例數(shù)據(jù),我想通過創(chuàng)建一個條件來檢查以前的值來生成一個新的 id。我試著用這個df['newid ] = df.rolling(window=2).apply(create_new_id)但我不知道正確的使用方法。
1 回答

隔江千里
# print
TA貢獻1906條經(jīng)驗 獲得超10個贊
嘗試
df['newid'] = df['date'].dt.strftime('%Y%m%d')+(df.groupby([df['date'].dt.date,'id']).cumcount()+1).astype(str).str.zfill(6) + '-A'
print(df)
date id newid
0 2019-01-01 10:00:00 1 20190101000001-A
1 2019-01-01 11:00:00 1 20190101000002-A
2 2019-01-01 12:00:00 1 20190101000003-A
3 2019-01-01 19:00:00 2 20190101000001-A
4 2019-01-02 09:00:00 2 20190102000001-A
5 2019-01-02 10:00:00 2 20190102000002-A
6 2019-01-05 15:00:00 3 20190105000001-A
添加回答
舉報
0/150
提交
取消