【发布时间】:2020-07-12 08:47:34
【问题描述】:
我正在使用一个非常大的 (308801, 256) dataframe。在dataframe 中有一个ON_TIME 列,其中包含值1 或0(是的,我们准时交货,或者否,我们没有)。
我想为每一列计算每个值是 1 或 0 的次数。示例数据集如下所示:
| Delivery_Type | Delivery_Driver | ON_TIME |
|:-------------:|:---------------:|:-------:|
| A | Wundermahn | 1 |
| B | Wundermahn | 0 |
| B | Wundermahn | 0 |
| A | Jon Skeet | 1 |
| C | Jon Skeet | 1 |
| A | Wundermahn | 0 |
我想要一个数据集,对于每一列,如下所示:
| Delivery_Type | ON_TIME_1 | ON_TIME_0 |
|:-------------:|:---------:|:---------:|
| A | 2 | 1 |
| B | 0 | 2 |
| C | 1 | 0 |
我知道在 SQL 中,我可以这样做:
SELECT
DELIVERY_TYPE,
SUM(CASE WHEN ON_TIME = 1 THEN 1 ELSE 0 END AS ON_TIME_1) AS ON_TIME_1,
SUM(CASE WHEN ON_TIME = 0 THEN 1 ELSE 0 END AS ON_TIME_0) AS ON_TIME_0
FROM
dataframe
GROUP BY
DELIVERY_TYPE
但是我如何在 Python 中做到这一点? 我试过了:
for col in df:
temp = df[col].groupby('ON_TIME')
print(temp)
但这不起作用。如何在 pandas 中达到预期的效果?
【问题讨论】:
-
这能回答你的问题吗? How to pivot a dataframe
-
这个link也好像很相似
-
我觉得不是重复的,这里要重命名