Прежде всего, прошу прощения. Это мой первый опыт использования переполнения стека, поэтому я надеюсь, что я делаю это правильно! Я искал, но не могу найти то, что я ищу. Я тоже совершенно новый с pandas и python :) Я попытаюсь использовать пример, и я постараюсь быть ясным.Pandas Pivot table, как поставить серию столбцов в атрибуте значений
У меня есть блок данных с 30 столбцами, который содержит информацию о корзине покупок, 1 из столбцов (порядок) имеет 2 значения, либо завершенные в процессе. И у меня есть 20 столбцов с предметами, скажем, яблоко, апельсин, бананы ... И мне нужно знать, сколько раз есть яблоко в полном порядке и сколько в порядке выполнения. Я решил использовать сводную таблицу с подсчетом совокупной функции. Это будет небольшой пример dataframe:
Order | apple | orange | banana | pear | pineapple | ... |
-----------|-------|--------|--------|------|-----------|------|
completed | 2 | 4 | 10 | 5 | 1 | |
completed | 5 | 4 | 5 | 8 | 3 | |
iProgress | 3 | 7 | 6 | 5 | 2 | |
completed | 6 | 3 | 1 | 7 | 1 | |
iProgress | 10 | 2 | 2 | 2 | 2 | |
completed | 2 | 1 | 4 | 8 | 1 | |
У меня есть выход, я хочу, но что я ищу более элегантный способ выбора много столбцов без необходимости вводить их вручную.
df.pivot_table(index=['Order'], values=['apple', 'bananas', 'orange', 'pear', 'strawberry',
'mango'], aggfunc='count')
Но я хочу, чтобы выбрать около 15 столбцов, поэтому вместо того, чтобы печатать один от один 15 раз, я уверен, что есть простой способ сделать это с помощью номера столбцов или что-то. Предположим, я хочу выбирать столбцы с 6 по 15.
Я пробовал такие вещи, как values = [df.columns [6:15]], я также пробовал использовать df.iloc, но, как я уже сказал, я «Я довольно новый, поэтому я, вероятно, неправильно использую вещи или делаю глупые вещи!
Есть ли способ получить их в том порядке, в котором они есть? Потому что в моем ответе они, похоже, были заказаны в алфавитном порядке, и я хочу сохранить порядок столбцов. Так оно и должно быть яблоко, апельсин, банан ...
Order Completed In progress
apple 92 221
banana 102 144
mango 70 55
Я просто искал способ улучшения моего кода, и я надеюсь, что я не сделал много путаницы. Спасибо!
Спасибо за ваш ответ, я попробовал, но я получаю эту ошибку: исключение KeyError: [ «яблоко», ' banana ',' orange '] не в индексе ", когда я использую этот стиль' df = df.pivot_table (columns = [' Order '], values = df.columns [1: 3], aggfunc =' count ') 'So возможно, проблема в другом месте? –
Хорошо, тогда второй и третий столбцы являются 'apple' и' orange'? В образце 'print (df.columns [1: 3])' - 'Index (['apple', 'orange '], dtype =' object ') ' – jezrael
python подсчитывает от' 0', поэтому первый столбец - 'df.columns [0]', второй '1' ... – jezrael