Pandas: як додати фільтр до зведеної таблиці
Ви можете використовувати наступний базовий синтаксис, щоб додати умову фільтра до зведеної таблиці pandas:
df[df. col1 == ' A ']. pivot_table (index=' col1 ', values=[' col2 ', ' col3 '], aggfunc=' sum ')
У цьому конкретному прикладі створюється зведена таблиця, яка відображає суму значень col2 і col3 , згрупованих за col1 .
Фільтр перед функцією pivot_table() вказує, що ми хочемо включити лише ті рядки, де значення в стовпці col1 оригінального DataFrame має значення «A».
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: як додати фільтр до зведеної таблиці Pandas
Припустімо, що у нас є такий фрейм даних pandas, який містить інформацію про різних баскетболістів:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'], ' points ': [4, 4, 2, 8, 9, 5, 5, 7, 8, 8, 4, 3], ' assists ': [2, 2, 5, 5, 4, 7, 5, 3, 9, 8, 4, 4]}) #view DataFrame print (df) team points assists 0 to 4 2 1 to 4 2 2 to 2 5 3 to 8 5 4 B 9 4 5 B 5 7 6 B 5 5 7 B 7 3 8 C 8 9 9 C 8 8 10 C 4 4 11 C 3 4
Ми можемо використати наступний код, щоб створити зведену таблицю в pandas, яка відображає суму значень у стовпцях балів і допоміжних даних, згрупованих за командою , лише для рядків, де вихідний DataFrame має значення в стовпці оцінки. команда рівна «А»:
#create pivot table for rows where team is equal to 'A'
df[df. team == ' A ']. pivot_table (index=' team ', values=[' points ', ' assists '],
aggfunc=' sum ')
assist points
team
At 14 18
Зауважте, що зведена таблиця лише підсумовує значення стовпців очок і допомоги для рядків, де команда дорівнює «А».
Ви також можете використовувати оператори & та | щоб застосувати фільтр, який використовує логіку «І» або «АБО».
Наприклад, ми можемо використати наведений нижче синтаксис, щоб створити зведену таблицю, яка фільтрує рядки, де значення в стовпці команди вихідного DataFrame дорівнює «A» або «B»:
#create pivot table for rows where team is equal to 'A' or 'B'
df[( df.team == ' A ') | (df. team == ' B ')]. pivot_table (index=' team ',
values=[' points ', ' assists '],
aggfunc=' sum ')
assist points
team
At 14 18
B 19 26
Зауважте, що зведена таблиця лише підсумовує значення в стовпцях балів і допомоги для рядків, де команда дорівнює «A» або «B».
Примітка . Ви можете знайти повну документацію щодо функції pandas pivot_table() тут .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в pandas:
Pandas: Як сортувати зведену таблицю за значеннями в стовпці
Pandas: Як створити зведену таблицю із сумою значень
Pandas: Як додати проміжні підсумки до зведеної таблиці
Pandas: як змінити назви стовпців у зведеній таблиці