![](/img/trans.png)
[英]How to drop duplicates in column with respect to values in another column in pandas?
[英]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.