簡體   English   中英

大熊貓:按列值刪除准重復項

[英]Pandas: Drop quasi-duplicates by column values

我有一個清單,看起來像這樣(我將其放入DF):

[
['john', '1', '1', '2016'],
['john', '1', '10', '2016'],
['sally', '3', '5', '2016'],
['sally', '4', '1', '2016']
]

columns['name', 'month', 'day', 'year']

我基本上想輸出一個新的DF,每個人只有最舊的一行。 因此,它應包含兩行,一行用於1/1/16的john,另一行用於3/16/16的sally。

我一直很難在DF內進行這種選擇,並希望有人可以就如何實現上述目標提供一些建議。

您可以按year, month, day對數據框進行排序,然后從每個name的第一行開始:

df.sort_values(by = ['year', 'month', 'day']).groupby('name').first()

#   month   day year
# name          
# john  1   1   2016
#sally  3   5   2016

資料

df = pd.DataFrame([['john', '1', '1', '2016'],
                   ['john', '1', '10', '2016'],
                   ['sally', '3', '5', '2016'],
                   ['sally', '4', '1', '2016']], 
                   columns = ['name', 'month', 'day', 'year'])

選項1
使用pd.to_datetime解析['year','month','day']列。
groupby('name')然后first

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
df.sort_values(['name', 'date']).groupby('name').first()

在此處輸入圖片說明

選項2
相同的pd.to_datetime用法。
groupby('name')使用idxmin查找最小日期。

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])
df.ix[df.groupby('name').date.idxmin()]

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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