По сути, идея состоит в том, чтобы сравнить каждый элемент в Ранжированном списке с заданным столбцом , и, если он присутствует, вы должны добавить их в новый список ,Это гарантирует, что вы не нарушите уже существующее ранжирование.
Вышеуказанная часть может быть легко достигнута простым для цикла .
Следующая часть - найти всеуникальные элементы в списке ранжирования, которых нет в новом списке и добавляются оба списка.
Вот код:
import pandas as pd
import numpy as np
#Create the Standard Ranked List
rank_list=['B','D','Z','A','C']
#Create the sample DataFrame
data={'Category 1':['A','C','G','D'],'Category 2':['B','A','D','Nothing'],'Category 3':['C','A','B','Nothing']}
df=pd.DataFrame(data)
#Replace all 'Nothing' Values with 'NaN'
df.replace('Nothing',np.NaN)
#Take the input from the user
print("Enter Category: ")
user_input=input()
#Create one list for filtering and one for the final result
present_values=[]
final_list=[]
#Compare all values in Standard Ranked List with df and if present, append to present_values
for value in rank_list:
if value in df[user_input].values:
present_values.append(value)
#Check for unique value not present in present_values
for value in rank_list:
if value not in present_values:
final_list.append(value)
#Add both the lists
final_list=present_values+final_list
print("My final list is: ")
print(final_list)
Примечание: не делайтеНе забудьте обработать случаи, когда пользователь вводит данные как «категория 1», но вам нужно «Категория 1»
Лучший способ справиться с этим - сделать все имена столбцов строчными и независимо от того, что может быть вводом, преобразует все входные данные в нижний регистр.
Удачи!
Пусть CODE будет с вами!