python - 透视 Pandas 数据框以查看是否满足条件
问题描述
我有以下 DataFrame 表示用户是否在某周、某年出现:
User Year Week
0 John 2020 1
1 John 2020 2
2 Steve 2020 1
3 Fred 2020 3
4 George 2020 2
5 George 2020 3
... ... ...
200 John 2021 2
201 John 2021 4
202 Steve 2021 2
203 Fred 2021 2
204 George 2021 1
205 George 2021 4
我想得到一个 DataFrame 来分组数据集User
,每一列代表他是否出现在某一年的某一周,每一列的类型要么是布尔型,要么是整数,可能值为 0 或 1。
它看起来像这样:
2020_1 2020_2 2020_3 ... 2021_1 2021_2 2021_3 2021_4
John 1 1 0 ... 0 1 0 1
Steve 1 0 0 ... 0 1 0 0
Fred 0 0 1 ... 0 1 0 0
George 0 1 1 ... 1 0 0 1
无论如何都可以在不遍历 DataFrme 的情况下做到这一点?
谢谢。
解决方案
创建一个新列并使用pd.crosstab
:
pd.crosstab(df['User'],
df[['Year','Week']].astype(str).apply('_'.join, axis=1)
)
输出:
col_0 2020_1 2020_2 2020_3 2021_1 2021_2 2021_4
User
Fred 0 0 1 0 1 0
George 0 1 1 1 0 1
John 1 1 0 0 1 1
Steve 1 0 0 0 1 0
推荐阅读
- angular - 使用 mat-error 删除 mat-form-field 中的底部间距
- r - 使用 Shiny Select Picker 过滤传单多边形
- python - 在外部使用 python 为不和谐的人添加角色
- python - 如何返回基于 1D 掩码截断的 k-dim pytorch 张量
- ios - 如何从带有委托的 UITableViewCell 启动模型 UITableViewController?
- python - 如何在一个命令中运行容器并在 docker 上执行 python?
- flutter - 如何根据类别显示列表中的项目?
- php - /usr/local/etc 是否读取全局 /etc?
- bokeh - 从 ColumnDataSource 列中提取最大值和最小值
- xaml - Xamarin Forms 使用 DataTrigger 基于数据的条件格式