簡體   English   中英

在 Pandas 中,如何找到一列中每個鍵的每第三行並添加帶有第三行信息的新列?

[英]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 行不夠,可以選擇最接近的一個並將時間戳放入新列中。

謝謝!

  1. calc, cumcount() // 3 user_id中每 3 行 3
  2. 那么這是一個簡單的groupby()firstlast
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.

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