Python 基于列删除重复的行
我想问一个关于基于列(2列)删除重复行的问题 例如,我在下面构建了一个数据框架:Python 基于列删除重复的行,python,pandas,dataframe,duplicates,Python,Pandas,Dataframe,Duplicates,我想问一个关于基于列(2列)删除重复行的问题 例如,我在下面构建了一个数据框架: country city date col_d Singapore Singapore 2020-07-17 09:00 5 Singapore Singapore 2020-07-17 18:00 5 Malaysia Johor Bahru 2020-07-17 09:00 5 Mal
country city date col_d
Singapore Singapore 2020-07-17 09:00 5
Singapore Singapore 2020-07-17 18:00 5
Malaysia Johor Bahru 2020-07-17 09:00 5
Malaysia Johor Bahru 2020-07-17 18:00 6
Singapore Singapore 2020-07-18 09:00 0
Singapore Singapore 2020-07-18 18:00 10
Malaysia Johor Bahru 2020-07-19 09:00 0
Malaysia Johor Bahru 2020-07-19 18:00 6
Malaysia Senlangor 2020-07-19 09:00 6
我想做一个操作,根据“日期”和“城市”删除重复的行
- 对于日期-我只希望保留最后一行,即 应保留18:00的时间
- 对于城市-只有在有 重复,例如Singapore/Johor Bahru,仅显示最后一行 18:00的时间应该停留
- 注意,col_d也有不同的值,这就是为什么我 希望保留18:00的行(如果存在)
country city date col_d
Singapore Singapore 2020-07-17 18:00 5
Malaysia Johor Bahru 2020-07-17 18:00 6
Singapore Singapore 2020-07-18 18:00 10
Malaysia Johor Bahru 2020-07-19 18:00 6
Malaysia Senlangor 2020-07-19 09:00 6
我使用了下面的代码,但基于日期的重复行似乎没有减少
因此,首先,我将“date”列转换为datetime格式
df['Date'] = pd.to_datetime(df['date']).dt.date
由于数据已经按升序排序,所以我不添加额外的代码来按升序排序
看起来是这样的:
country city date col_d
Singapore Singapore 2020-07-17 5
Singapore Singapore 2020-07-17 5
Malaysia Johor Bahru 2020-07-17 5
Malaysia Johor Bahru 2020-07-17 6
Singapore Singapore 2020-07-18 0
Singapore Singapore 2020-07-18 10
Malaysia Johor Bahru 2020-07-19 0
Malaysia Johor Bahru 2020-07-19 6
Malaysia Senlangor 2020-07-19 6
之后,我使用下面的代码“删除”所有重复的行,同时保留“last”。如上所述,它不起作用
df.drop_duplicates(subset=['date','city'], keep='last')
有人能帮我吗?谢谢 在转换为
datetime
时删除.dt.date
您创建了一个名为date
的新列,但在删除重复项时,您仍然会引用旧的date
列,将其替换为新的date
列:删除重复项(子集=['date','city',keep='last')
谢谢!这是个愚蠢的错误。我创建了一个新列来删除.dt.date,然后基于新列删除。这似乎奏效了!在转换为datetime
时删除.dt.date
您创建了一个名为date
的新列,但在删除重复项时,您仍然会引用旧的date
列,将其替换为新的date
列:删除重复项(子集=['date','city',keep='last')
谢谢!这是个愚蠢的错误。我创建了一个新列来删除.dt.date,然后基于新列删除。这似乎奏效了!