想問一下Pandas在處理去重合併的同時, 有沒有辦法依據某個欄位的值來決定留哪筆資料?
例如:
name video_name second
0 john 1.mp4 55
1 john 1.mp4 88
2 jonh 2.mp4 13
3 kate 1.mp4 33
我想要合併john在同一個影片底下並只留下最大second的那筆資料
等於name跟video_name做合併, 並依據second大小來決定去重的單一資料.
結果如下:
name video_name second
0 john 1.mp4 88
1 jonh 2.mp4 13
2 kate 1.mp4 33
有辦法做到嗎?還是說有什麼關鍵字方向可以去研究
謝謝各位
import pandas as pd
df = pd.DataFrame([["john", "1.mp4", 55], ["john", "1.mp4", 88], ["jonh", "2.mp4", 13], ["kate", "1.mp4", 33]], columns=["name", "video_name", "second"])
df = df.groupby(["name", "video_name"],as_index=False).max()
print(df)
output:
name video_name second
0 john 1.mp4 88
1 jonh 2.mp4 13
2 kate 1.mp4 33
請教一下如果有其他欄位的話.max() 還適用嗎
name video_name second age
0 john 1.mp4 88 23
1 jonh 2.mp4 13 33
2 kate 1.mp4 33 12
適用 不過排列就會是
name video_name age second
因為是用其他欄位做 group 去比較最大值
寫這樣應該比較容易懂
df = df.groupby(["name", "video_name"], as_index=False)["second"].max()
你要再加 age 就是
df = df.groupby(["name", "video_name", "age"], as_index=False)["second"].max()