我想问一个有关删除基于列(两列)的重复行的问题
例如,我在下面构造了一个数据框:
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
我想执行一项操作,即根据“日期”和“城市”删除重复的行。
因此正确的DF应该如下所示:
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
我使用了下面的代码,但看来基于日期的重复行并没有丢失。
因此,首先,我首先将“日期”列转换为日期时间格式。
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')
有人可以帮助我吗?感激!