首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据条件从数据框中交叉表中的列?

如何根据条件从数据框中交叉表中的列?
EN

Stack Overflow用户
提问于 2019-06-14 16:59:55
回答 1查看 2.2K关注 0票数 1

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

我已经尝试了pd.crosstab(df['health'], df['money']) if df['year']==1988和几个if的位置。我希望这很容易解决,但我对Python和Pandas还是个新手。

代码语言:javascript
运行
复制
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'])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-14 17:00:49

crosstab之前按boolean indexing过滤

代码语言:javascript
运行
复制
df1 = df[df['year']==1988]
df2 = pd.crosstab(df1['health'], df1['money'])

编辑:您可以分别筛选每一列:

代码语言:javascript
运行
复制
mask = df['year']==1988
df2 = pd.crosstab(df.loc[mask, 'health'], df.loc[mask, 'money'])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56594779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档