Python: как создать подмножество объекта DataFrame, выбрав строки и столбцы - PullRequest
0 голосов
/ 13 июля 2020

Моя цель - получить указанные пользователем имена_столбцов и row_nums , чтобы создать новый объект DataFrame, который является подмножеством df . Следующий код, который я придумал, работает нормально:

column_names = [column for column in input("Enter column names to query, separated by spaces: ").split()]
row_nums = [int(row) for row in input("Enter rows to query, separated by spaces: ").split()]

# convert user inputs into corresponding exam_data column index 
column_index = {'name': 0,'score': 1, 'attempts': 2,'qualify': 3} # create the dictionary
col_num = [column_index[col] for col in column_names] # get list of corresponding column index numbers

# create new DataFrame object that is subset of df
df_new = df.iloc[rows, col_num]
print(df_new)

Однако мне кажется, что строки 5 и 6 в моем коде не нужны. Есть ли способ получить тот же df_new без необходимости преобразовывать имена_столбцов в список ссылочных целых чисел для передачи в df.ilo c () ? Я ищу способ использовать column_names и row_nums напрямую (т.е. используя column_names = ['score', 'qualify'] напрямую, вместо того, чтобы переводить их в col_num = [ 1,3])

Данный пример DataFrame для справки:

exam_data = {'name': ['Anastasia', 'Dima', 'Katherine', 'James', 'Emily', 'Michael', 'Matthew', 'Laura', 'Kevin', 'Jonas'],
'score': [12.5, 9, 16.5, np.nan, 9, 20, 14.5, np.nan, 8, 19],
'attempts': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'qualify': ['yes', 'no', 'yes', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes']}
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(exam_data, labels)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...