看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)产品部把 4 个 App 的 日活 (DAU) 和 留存率 (RR) 数据 按周存成长表:
import pandas as pd
wide = pd.DataFrame({
"app": ["A", "B", "C", "D"],
"DAU_w1": [100, 80, 60, 40],
"DAU_w2": [110, 85, 65, 45],
"RR_w1": [0.9, 0.85, 0.8, 0.75],
"RR_w2": [0.92, 0.87, 0.82, 0.77]
})
用 一行 wide_to_long()
把宽表转成长表,要求:
app
作为标识列周次
(w1/w2) 和对应的 DAU
、RR
代码如下:
long = pd.wide_to_long(
wide,
stubnames=["DAU", "RR"],
i="app",
j="周次",
sep="_",
suffix=r"\w+"
).reset_index()
print(long)
运行结果:
app 周次 DAU RR
0 A w1 100 0.90
1 A w2 110 0.92
2 B w1 80 0.85
3 B w2 85 0.87
4 C w1 60 0.80
5 C w2 65 0.82
6 D w1 40 0.75
7 D w2 45 0.77
(完)
更新时间:2025-09-02 20:38:43 标签:pandas python 宽表 长表