У меня есть фрейм данных со многими столбцами. Есть столбец datetime, и есть повторяющиеся записи для datetime с данными для этих дубликатов, поступающих из разных источников. Я хотел бы удалить дубликаты на основе column "dt"
, но я хочу сохранить результат на основе того, что находится в column "pref"
. Ниже я привел упрощенные данные, но причина этого в том, что у меня также есть столбец значений, а столбец "Pref"
является источником данных. Я предпочитаю определенные источники данных, но мне нужна только одна запись на дату (column "dt")
. Я бы хотел, чтобы этот код работал, чтобы мне не приходилось указывать полный список настроек.
Искусственный код данных
import pandas as pd
import numpy as np
df=pd.DataFrame({'dt':[1,1,1,2,2,3,3,4,4,5],
"Pref":[1,2,3,2,3,1,3,1,2,3],
"Value":np.random.normal(size=10),
"String_col":['A']*10})
df
Out[1]:
dt Pref Value String_col
0 1 1 -0.479593 A
1 1 2 0.553963 A
2 1 3 0.194266 A
3 2 2 0.598814 A
4 2 3 -0.909138 A
5 3 1 -0.297539 A
6 3 3 -1.100855 A
7 4 1 0.747354 A
8 4 2 1.002964 A
9 5 3 0.301373 A
Желаемый результат 1 (СЛУЧАЙ 1):
В этом случае мой список предпочтений имеет значение полностью. Я предпочитаю источник данных 2, за которым следует 1, но я возьму 3, если это все, что у меня есть.
preference_list=[2,1,3]
Out[2]:
dt Pref Value String_col
1 1 2 0.553963 A
3 2 2 0.598814 A
5 3 1 -0.297539 A
8 4 2 1.002964 A
9 5 3 0.301373 A
Желаемый результат 2 (СЛУЧАЙ 2)
В этом случае я просто хочу найти источник данных 1. Если его нет, мне все равно, что это за другой источник данных.
preference_list2=[1]
Out[3]:
dt Pref Value String_col
0 1 1 -0.479593 A
3 2 2 0.598814 A
5 3 1 -0.297539 A
7 4 1 0.747354 A
9 5 3 0.301373 A
Я могу представить, что делаю это очень медленно и сложный l oop, но я чувствую, что должна быть команда для выполнения sh этого. Еще одна важная вещь: Мне нужно сохранить некоторые другие текстовые столбцы во фрейме данных, чтобы .agg мог вызвать проблемы с этими метаданными. Я экспериментировал с сортировкой и использованием аргумента keep
в drop_duplicates
, но безуспешно.