如何根据条件交叉引用数据框中的列?

时间:2019-06-14 08:59:55

标签: python pandas dataframe crosstab

我经常需要交叉表来对我的数据进行预分析。我可以使用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 个答案:

答案 0 :(得分:2)

crosstab之前按boolean indexing进行过滤:

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'])