[英]In Pandas, how do I find every 3rd row for each key in one column and add a new column with the 3rd row's info?
輸入:
用戶身份 | 時間戳 |
---|---|
一個 | 2021-01-17 14:46:26 |
一個 | 2021-01-17 14:47:27 |
一個 | 2021-01-17 14:48:27 |
一個 | 2021-01-17 14:49:27 |
一個 | 2021-01-17 14:50:27 |
乙 | 2021-02-03 19:29:34 |
乙 | 2021-02-03 19:30:34 |
乙 | 2021-02-03 19:31:34 |
乙 | 2021-02-03 19:32:33 |
乙 | 2021-02-03 19:33:33 |
乙 | 2021-02-03 19:34:33 |
C | 2021-02-04 16:44:29 |
C | 2021-02-04 16:45:30 |
C | 2021-02-04 16:46:29 |
C | 2021-02-04 16:47:29 |
C | 2021-02-04 16:48:28 |
C | 2021-02-04 16:49:29 |
C | 2021-02-04 16:50:29 |
預期 Output:
用戶身份 | 時間戳 | 時間戳2 |
---|---|---|
一個 | 2021-01-17 14:46:26 | 2021-01-17 14:48:27 |
一個 | 2021-01-17 14:48:27 | 2021-01-17 14:50:27 |
乙 | 2021-02-03 19:29:34 | 2021-02-03 19:31:34 |
乙 | 2021-02-03 19:31:34 | 2021-02-03 19:33:33 |
乙 | 2021-02-03 19:33:33 | 2021-02-03 19:34:33 |
C | 2021-02-04 16:44:29 | 2021-02-04 16:46:29 |
C | 2021-02-04 16:46:29 | 2021-02-04 16:48:28 |
C | 2021-02-04 16:48:28 | 2021-02-04 16:50:29 |
C | 2021-02-04 16:50:29 | 2021-02-04 16:50:29 |
像 B 和 C 一樣,如果剩下的第 3 行不夠,可以選擇最接近的一個並將時間戳放入新列中。
謝謝!
cumcount() // 3
user_id中每 3 行 3groupby()
與first
和last
df = pd.read_csv(io.StringIO("""user_id timestamp
A 2021-01-17 14:46:26
A 2021-01-17 14:47:27
A 2021-01-17 14:48:27
A 2021-01-17 14:49:27
A 2021-01-17 14:50:27
B 2021-02-03 19:29:34
B 2021-02-03 19:30:34
B 2021-02-03 19:31:34
B 2021-02-03 19:32:33
B 2021-02-03 19:33:33
B 2021-02-03 19:34:33
C 2021-02-04 16:44:29
C 2021-02-04 16:45:30
C 2021-02-04 16:46:29
C 2021-02-04 16:47:29
C 2021-02-04 16:48:28
C 2021-02-04 16:49:29
C 2021-02-04 16:50:29"""), sep="\t")
df.timestamp=pd.to_datetime(df.timestamp)
df2 = (df.assign(grp=df.groupby("user_id")["user_id"].cumcount()//3)
.groupby(["user_id","grp"])["timestamp"].agg(timestamp="first",timestamp2="last")
.reset_index()
.drop(columns="grp")
)
用戶身份 | 時間戳 | 時間戳2 |
---|---|---|
一個 | 2021-01-17 14:46:26 | 2021-01-17 14:48:27 |
一個 | 2021-01-17 14:49:27 | 2021-01-17 14:50:27 |
乙 | 2021-02-03 19:29:34 | 2021-02-03 19:31:34 |
乙 | 2021-02-03 19:32:33 | 2021-02-03 19:34:33 |
C | 2021-02-04 16:44:29 | 2021-02-04 16:46:29 |
C | 2021-02-04 16:47:29 | 2021-02-04 16:49:29 |
C | 2021-02-04 16:50:29 | 2021-02-04 16:50:29 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.