Как сделать кросс-таблицу столбцов из кадра данных на основе условия? - PullRequest
1 голос
/ 14 июня 2019

Мне часто нужны кросс-таблицы для предварительного анализа моих данных. Я могу создать базовую перекрестную таблицу с pd.crosstab(df['column'], df['column']), но не могу добавить код (логическое выражение), чтобы отфильтровать эту перекрестную таблицу только для подмножества моего информационного кадра.

Я пробовал pd.crosstab(df['health'], df['money']) if df['year']==1988 и несколько положений для if. Я надеюсь, что это легко решить, но я относительно новичок в Python и Pandas.

import pandas as pd
df = pd.DataFrame({'year': ['1988', '1988', '1988', '1988', '1989', '1989', '1989', '1989'],
                   'health': ['2', '2', '3', '1', '3', '5', '2', '1'],
                   'money': ['5', '7', '8', '8', '3', '3', '7', '8']}).astype(int)

# cross table for 1988 and 1999
pd.crosstab(df['health'], df['money'])

1 Ответ

2 голосов
/ 14 июня 2019

Фильтр по boolean indexing до crosstab:

df1 = df[df['year']==1988]
df2 = pd.crosstab(df1['health'], df1['money'])

РЕДАКТИРОВАТЬ: Вы можете фильтровать каждый столбец отдельно:

mask = df['year']==1988
df2 = pd.crosstab(df.loc[mask, 'health'], df.loc[mask, 'money'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...