Кадр данных Pandas выбирает и объединяет частично дублированные строки иерархией столбцов - PullRequest
0 голосов
/ 05 сентября 2018

Учитывайте это частичное значение df банок с краской и их уровень заполнения% в зависимости от температуры краски при заливке.

myinputdf=pd.DataFrame(data= [['Paint','R','25','5L','','99',''],['Paint','R','50','5L','96','','101'],['Paint','Y','25','5L','','98.5',''],['Paint','G','25','5L','','98.2',''],['Paint','G','-10','5L','97','','102.1'],['Paint','Y','-30','5L','97','98.6',''],['Paint','B','25','5L','98','98.2','99.4'],['Paint','B','55','10L','97.3','','99.9'],['Eggs','R','25','5L','','99','']], columns=['Product', 'Color', 'Temperature', 'Volume', 'Low Side','Typ','High Side'])

Я хочу получить наиболее полные данные Low / Typ / High из частичных данных по цвету краски, пока мне не станет доступно больше исходных данных.

myoutputdf = pd.DataFrame(data=[['Paint', 'R', '[25,50]', '5L', '96', '99', '101'], ['Paint', 'Y', '[-30,25]', '5L', '97', '98.5', ''], ['Paint', 'G', ['-10','25'], '5L', '97', '98.2', '102.1'],['Paint', 'B', ['25', '55'], ['5L','10L'], '97.3', '98.2', '99.9'], ['Eggs', 'R', '25', '5L', '', '99', '']], columns=['Product', 'Color', 'Temperature', 'Volume', 'Low Side', 'Typ', 'High Side'])

В myinputdf есть несколько целевых дубликатов, таких как Yellow -30C Typ и Blue 10L 55C High / Low.

Я хочу иметь способ иерархического выбора данных.

Например, если у меня есть только данные 25C, я использую только это, но если у меня также есть более конкретные данные 55C, возьмите их, и если у меня есть более конкретные данные 10L, возьмите их.

Таким образом, каждый столбец условий, который я хочу выбрать иерархическим способом, и распределить в одну строку «лучшие текущие данные» для каждого цвета.

Пока я получил

new_filter= myinputdf.duplicated(subset=['Product', 'Color'], keep= False)
minidf=myinputdf[new_filter.values]

Но я не знаю, что смогу построить масштабируемый иерархический фильтр по столбцам.

Спасибо за вашу помощь заранее.

...