python - 如何根据条件从数据框中交叉制表列?

标签 python pandas dataframe crosstab

我经常需要交叉表来对数据进行预分析。我可以用 pd.crosstab(df['column'], df['column']) 生成一个基本的交叉表但无法添加 Crition(逻辑表达式),以仅将此交叉表过滤到我的数据帧的子集。

我已经尝试过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'])

最佳答案

过滤条件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'])

关于python - 如何根据条件从数据框中交叉制表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56594779/

相关文章:

python - 当 pandas 是导入时,Cx_freeze TypeError 只能使用 numpy 依赖项连接列表(不是 "NoneType")来列出

python - 如何使用 Python 在 Keras 中绘制 ANN 的 ROC 曲线以进行 10 折交叉验证?

python - 如何使用带有日期的plotly graph_objects scatter

python - 选择pd.Dataframe中的逆向索引

python - 如何检查大型 python pandas 数据框是否有重复项(不需要实际的重复行)

python - 我如何在 Pandas DataReader 中修复这个 RemoteDataError

java - 使用 Java 检索 python 脚本的输出

python - 在 VS Code 中漂亮地打印 pandas 数据框

python - 对(删除的)重复行的值求和 Pandas DataFrame

python - 拆分数据帧的数据帧并插入一列