
本文介绍如何高效处理数据框,将单列“类型”数据转换为多列,并统计每日各类型数据的出现次数。
假设您的数据框包含日期和类型两列,例如:
日期 类型 2024-01-01 A 2024-01-01 B 2024-01-01 A 2024-01-02 C 2024-01-02 B 2024-01-02 C 2024-01-02 A 2024-01-02 A 2024-01-03 A 2024-01-03 D 2024-01-03 B 2024-01-03 E ...
目标是将其转换为如下形式:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
日期 类型A 类型B 类型C 类型D 类型E 2024-01-01 2 1 0 0 0 2024-01-02 2 1 2 0 0 2024-01-03 1 1 0 1 1 ...
使用Python的Pandas库可以轻松实现此转换:
import pandas as pd
# 示例数据
data = {'日期': ['2024-01-01', '2024-01-01', '2024-01-01', '2024-01-02', '2024-01-02', '2024-01-02', '2024-01-02', '2024-01-02', '2024-01-03', '2024-01-03', '2024-01-03', '2024-01-03'],
'类型': ['A', 'B', 'A', 'C', 'B', 'C', 'A', 'A', 'A', 'D', 'B', 'E']}
df = pd.DataFrame(data)
# 使用pd.get_dummies()进行one-hot编码
df_encoded = pd.get_dummies(df, columns=['类型'], prefix='', prefix_sep='')
# 按日期分组并求和
df_grouped = df_encoded.groupby('日期').sum()
# 打印结果
print(df_encoded)
print("-" * 60)
print(df_grouped)
pd.get_dummies() 函数将“类型”列转换为多个虚拟变量列(one-hot encoding),然后 groupby() 和 sum() 函数计算每日各类型的出现次数。 代码简洁高效,适用于大规模数据集处理。 输出结果与目标格式一致。









