我在Python的Pandas中有一个数据框,格式如下:
|-------------------------------|
|person | month | day | am | pm |
|-------------------------------|
| A | 5 | 10 | 1 | 0 |
| B | 5 | 10 | 1 | 0 |
| A | 5 | 12 | 0 | 1 |
| B | 5 | 12 | 1 | 0 |
|-------------------------------|
在这个虚拟的例子中,我有两个人在AM插槽或PM插槽上工作的数据(分别称为“ A”和“ B”)。因此,每一行包含该人的标签(A或B),月份和日期为两列,然后在AM和PM列中包含一个二进制值,以指示他们是否起作用(1)(0)。
我想将此数据框转换为另一种格式,其中每个月和日对只有一行,现在通过创建新列来包括人员标签,如下所示:
-----------------------------------------
month | day | A_am | A_pm | B_am | B_pm |
-----------------------------------------
5 | 10 | 1 | 0 | 1 | 0 |
5 | 12 | 0 | 1 | 1 | 0 |
-----------------------------------------
请问如何完成?我已经看到相关问题使用了诸如dataframe.agg和groupby之类的工具,但是我不确定如何针对我的情况进行调整。我想我需要按“月”和“日”列进行分组,然后以某种方式创建新列?
非常感谢任何帮助-谢谢。
请注意,这是一个虚拟示例,在我的实际用例中,要分组的两列不是月份和日期(即不是日期的一部分)。因此,我对月和日的任意dtypes的通用解决方案感兴趣,而不是将其转换为单个日期格式的东西。我也有大型数据集,因此性能非常重要,我想避免慢循环。