#python #pandas
#python #pandas
Вопрос:
Я создаю фрейм данных, который показывает доступность в отеле. Строки — это даты, а столбцы — типы комнат. Есть 5 столбцов, помеченных PD1_Total, PD2_Total, PDSK_Total, PDEK_Total и PDSU_Total.
Мне нужно создать столбец, в котором отображаются все данные о наличии отдельных номеров, добавленные вместе. Очевидный ручной способ сделать это — с помощью кода:
ga['Total_Rooms'] = ga['PD1_Total'] ga['PD2_Total'] ga['PDSK_Total'] ga['PDEK_Total'] ga['PDSU_Total']
Однако исходные данные могут быть обновлены позднее, чтобы включить другие типы номеров с суффиксом «_Total», поэтому я хотел бы найти способ создать эту формулу, чтобы автоматически включать все столбцы с этим суффиксом без необходимости обновлять формулу вручную.
Спасибо
Ответ №1:
Простое понимание списка для выбора столбца может помочь:
ga['Total_Rooms'] = ga[[col for col in ga.columns if col.endswith('_Total')]].sum(axis = 1)
Комментарии:
1. Спасибо, Хамза. Я отметил этот ответ как наиболее полезный, потому что я лучше понимаю понимание списков, чем регулярных выражений. Но они оба работают. Очень признателен.
2.
ga.loc[:,ga.columns.str.endswith('_Total')]
гораздо более читабелен.3. Привет, Куанг Хоанг! На самом деле это выдает ошибку для меня, поскольку возвращает список bools вместо фактических имен столбцов
Ответ №2:
Вы можете попробовать так:
df['Total_Rooms'] = df.filter(regex='_Total$').sum(axis=1)
Комментарии:
1. Спасибо Wasif. Это элегантное решение, которое также работает, но я еще мало что узнал о регулярных выражениях, так что это что-то новое для изучения. Очень признателен.