#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных с 3 столбцами [‘id’, ‘city’, ‘time’]:
city id time
0 CA 1 2019-01-01 05:34:21
1 CA 1 2019-01-01 08:10:21
2 CA 1 2019-02-01 06:10:21
3 NY 1 2019-02-01 16:10:21
4 NY 1 2019-02-01 18:10:21
5 CA 1 2019-02-01 22:10:21
6 CA 1 2019-02-02 02:10:21
Я столкнулся с проблемой, из-за которой требуется отфильтровать дублирующиеся данные по «городу», сохраняя при этом наименьшее «время», например:
city id time
0 CA 1 2019-01-01 05:34:21
1 NY 1 2019-02-01 16:10:21
2 CA 1 2019-02-01 22:10:21
Поскольку набор данных значительно велик, было бы лучше не использовать в нем циклы for. Как я могу это сделать?
Большое вам спасибо.
Ответ №1:
Вы можете использовать:
df_new=df.groupby([df.city.ne(df.city.shift()).cumsum(),'city'],as_index=False).min()
print(df_new)
city id time
0 CA 1 2019-01-01 05:34:21
1 NY 1 2019-02-01 16:10:21
2 CA 1 2019-02-01 22:10:21
Комментарии:
1. Ух ты! Это то, чего я ждал: D
2. @meW что именно? 😀
3. Застрял при создании
df.city.ne(df.city.shift()).cumsum()
.4. @ChrisLiu С удовольствием ..!! рад, что смог помочь. 🙂