按日期分组统计DataFrame中分类变量Va、Vb的每日数量
问题描述
原始数据
| Date | Time | Va | Vb |
|---|---|---|---|
| 01-01-2023 | 05:55 | A | B |
| 01-01-2023 | 06:25 | A | |
| 01-01-2023 | 17:42 | B | |
| 01-01-2023 | 19:17 | A | B |
| 02-01-2023 | 05:55 | A | B |
| 02-01-2023 | 06:25 | A | B |
| 02-01-2023 | 17:42 | A | B |
| 02-01-2023 | 19:17 | A |
需求
按Date列分组,统计每个日期下Va和Vb列的非空值数量。
实现代码
使用Pandas可快速完成需求,核心逻辑是按日期分组后,对目标列调用count()方法(该方法默认统计非空值数量):
import pandas as pd # 构造原始DataFrame data = { 'Date': ['01-01-2023', '01-01-2023', '01-01-2023', '01-01-2023', '02-01-2023', '02-01-2023', '02-01-2023', '02-01-2023'], 'Time': ['05:55', '06:25', '17:42', '19:17', '05:55', '06:25', '17:42', '19:17'], 'Va': ['A', 'A', '', 'A', 'A', 'A', 'A', 'A'], 'Vb': ['B', '', 'B', 'B', 'B', 'B', 'B', ''] } df = pd.DataFrame(data) # 若原始空值为字符串,先转为Pandas标准空值类型 df[['Va', 'Vb']] = df[['Va', 'Vb']].replace('', pd.NA) # 分组统计非空值 result = df.groupby('Date')[['Va', 'Vb']].count() print(result)
预期结果
| Date | Va | Vb |
|---|---|---|
| 01-01-2023 | 3 | 3 |
| 02-01-2023 | 4 | 3 |
内容的提问来源于stack exchange,提问作者Himadri Shekhar Bhatta
相关产品推荐
相关产品推荐

