我的資料框看起來像這樣(它說時間格式是datetime64[ns, UTC]):
name job feedback question time
a j1 False q1 2021-09-06 09:25:03.659000 00:00
a j1 True q1 2021-09-06 09:35:03.659000 00:00
a j1 True q2 2021-09-06 09:24:03.659000 00:00
b j1 False q1 2021-09-06 10:25:03.659000 00:00
b j1 True q1 2021-09-06 09:25:04.659000 00:00
c j1 True q3 2021-09-06 11:25:03.659000 00:00
c j1 False q3 2021-09-06 09:00:03.659000 00:00
d j1 False q2 2021-09-06 08:25:03.659000 00:00
d j1 True q2 2021-09-06 11:24:05.659000 00:00
我只想看看feedback給予且s第一次一個question嘗試每個name。所以:
name job feedback question time
a j1 False q1 2021-09-06 09:25:03.659000 00:00
a j1 True q2 2021-09-06 09:24:03.659000 00:00
b j1 True q1 2021-09-06 09:25:04.659000 00:00
c j1 False q3 2021-09-06 09:00:03.659000 00:00
d j1 False q2 2021-09-06 08:25:03.659000 00:00
我試過:
deduped = df.drop_duplicates(subset=["name", "job", "question"], keep="first")
但它并不總是有效,因為有時記錄是隨機順序的。
是否可以先按時間排序然后保留我的單行,如上所述?有沒有其他安全的方法來做到這一點?
uj5u.com熱心網友回復:
你的直覺是正確的,你可以sort_values:
deduped = (df.sort_values(by='time')
.drop_duplicates(subset=["name", "job", "question"], keep="first")
)
輸出:
name job feedback question time
7 d j1 False q2 2021-09-06 08:25:03.659000 00:00
6 c j1 False q3 2021-09-06 09:00:03.659000 00:00
2 a j1 True q2 2021-09-06 09:24:03.659000 00:00
0 a j1 False q1 2021-09-06 09:25:03.659000 00:00
4 b j1 True q1 2021-09-06 09:25:04.659000 00:00
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/347396.html
下一篇:合并兩個帶有id的資料幀
