python - 如果满足某些条件,将行转换为 pandas 数据框的列
问题描述
我有一个看起来像这样的熊猫数据框:
|Var1 | Var2 | Method | Category|
|-------------------------------------|
| A | 1 | check | cat1 |
| A | 1 | check | cat2 |
| B | 2 | check | cat1 |
| B | 2 | creditcard | cat2 |
其中 Method 只能是支票或信用卡,并且 Category 也仅限于两个可能的类别。
每当给定 Var 1 和 Var 2 的“方法”相同时,我想将两个类别行组合成列,如下所示:
|Var1 | Var2 | Method | Cat1 | Cat2 |
|----------------------------------------|
| A | 1 | check | cat1 | cat2 |
| B | 2 | check | cat1 | NaN |
| B | 2 | creditcard| NaN | cat 2|
这甚至可能吗?我尝试了各种 groupby/pivoting/index 重置安排,但没有任何效果。
感谢您的任何帮助!
解决方案
一种使用 groupby
创建join
字符串的方法,那就是get_dummies
问题
s=df.groupby(['Var1','Var2','Method'])['Category'].\
apply(','.join).str.get_dummies(',')
s=s*s.columns
s.reset_index(inplace=True)
s
Var1 Var2 Method cat1 cat2
0 A 1 check cat1 cat2
1 B 2 check cat1
2 B 2 creditcard cat2
推荐阅读
- uwp - 试用期满后如何让用户继续使用 UWP 应用
- tensorflow - 如何在 Call() 方法中保存带有位置参数的 keras 子类模型?
- python-3.x - 标题、x 和 y 标签未显示在使用 python 控制台的绘图中
- python - Zeep客户端抛出Service has no operation error
- angular - Angular ng-select如何防止上一个选定的项目
- sql - 离开加入时间太长
- sql - 使用 ER 图进行数据库设计
- spring-boot - 使用 Spring Kafka / Spring Boot 从主题的开头(偏移量 = 0)读取
- php - 添加 Infusionsoft 订阅 Woocommerce
- python - 无法使用 VBA 执行 Python 以使用 xlwings 创建文件