我有一個很大的數據集,我使用的是一個id號作爲索引。在開始處理之前,我需要處理一些出現的重複ID,但需要根據多個條件完成 - 實質上,我希望每個ID的所有重複條目都有條目。在多個標準下刪除重複的熊貓指數
在這個例子中,我可能會首先希望它採用最近一年的重複 - 這將使id 1唯一。但ID爲3仍然有剩下的兩個值,所以後來我想它去到下一個條件 - 在這種情況下,我們會說最大VAL:
import pandas as pd
data = {'id':[1, 1, 2, 3, 3, 3], 'year':[2001, 2002, 2002, 2001, 2002, 2002], 'val':[7, 8, 9, 17, 11, 12]}
df = pd.DataFrame(data).set_index('id')
dups = df[df.index.duplicated(keep=False)]
for id in dups.index.unique():
current = dups.loc[id]
max_yr = current['year'].max()
#continue to process using multiple conditionals inside the loop
如果結果是這樣的:
val year
id
1 7 2001
1 8 2002
2 9 2002
3 17 2001
3 11 2002
3 12 2002
打開此:
val year
id
1 8 2002
2 9 2002
3 12 2002
它的工作原理,但它的效率非常低,我覺得必須有一個量化的,或者至少更好的方式來做到這一點。 groupby可以被合併,但我仍然不確定如何在沒有循環訪問組的情況下做到這一點。
你是在:'df.groupby(level = 0).max()'? – MaxU
不,它需要考慮多個標準,以避免重複丟棄,爲每個ID留下一個*最佳*條目。 – Jeff