当前位置:首页>Excel>Python 玩转 Excel 案例【第 10 期】

Python 玩转 Excel 案例【第 10 期】

  • 2026-04-10 13:25:02
Python 玩转 Excel 案例【第 10 期】

Python 玩转 Excel 案例【第 10 期】

📌 案例说明

原始数据表(交叉报表):

项目
1月
2月
3月
4月
5月
6月
收入
23795
8860
13390
19964
19284
14265
成本
5466
9426
10578
16636
16363
16111
利润
1130
2685
1769
3391
6611
7949
管理费用
2933
1715
1455
2824
1684
959
销售费用
3885
521
2800
1247
3404
974

这是“销售部”的月度数据,还有“市场部”、“研发部”、“财务部”共4个Sheet,结构完全相同。

目标任务:

在日常工作中,我们经常遇到这种“交叉表”格式的数据——行是项目,列是月份,中间是数值。这种格式适合人看,但不适合机器分析

本期案例将跟大家学习如何用 Python 将多个多级表头的交叉表一次性合并成一个规范的一维表,方便后续的数据分析和可视化:

核心操作:多表合并 + 交叉表转一维表

  • • 关键函数pd.read_excel() + pd.concat()
  • • 核心逻辑:先按 Sheet 转换为临时 DataFrame,再用 pd.concat() 纵向合并

📜 完整代码

"""
将多个多级表头工作表合并为规范一维表(使用 pd.concat 标准写法)
"""

import
 pandas as pd

# 读取所有 sheet

file_path = "chapter-10.xlsx"
sheets_dict = pd.read_excel(file_path, sheet_name=None)  # 返回 {sheet名: DataFrame}

# 用于存放每个 Sheet 转换后的 DataFrame

all_dfs = []

for
 sheet_name, df in sheets_dict.items():
    # 1. 处理多级表头

    # 获取列名:第一行(月份)

    months = df.iloc[0, 1:].tolist()  # 从第2列开始是月份
    # 获取项目列(第一列)

    projects = df.iloc[1:, 0].tolist()  # 从第2行开始是项目
    # 获取数据区域(数值)

    values = df.iloc[1:, 1:].values

    # 2. 为当前 Sheet 构建临时数据

    temp_data = []
    for
 i, project in enumerate(projects):
        for
 j, month in enumerate(months):
            temp_data.append({
                "部门"
: sheet_name,
                "项目"
: project,
                "月份"
: month,
                "金额"
: values[i, j]
            })

    # 3. 将当前 Sheet 的数据转为 DataFrame

    temp_df = pd.DataFrame(temp_data)
    all_dfs.append(temp_df)

# 4. 使用 pd.concat() 合并所有 Sheet 的数据

result_df = pd.concat(all_dfs, ignore_index=True)

# 5. 保存结果

result_df.to_excel("规范一维表.xlsx", index=False)
print
("✅ 转换完成,已保存为 规范一维表.xlsx")

第一步:导入所需库

import pandas as pd

代码解释:

  • • import pandas as pd
    导入 pandas 库,这是 Python 数据处理的核心工具。它提供了 read_excel() 读取 Excel 文件、DataFrame 数据结构、concat() 合并数据等强大功能。

第二步:读取所有工作表

file_path = "chapter-10.xlsx"
sheets_dict = pd.read_excel(file_path, sheet_name=None)  # 返回 {sheet名: DataFrame}

代码解释:

  • • pd.read_excel(file_path, sheet_name=None)
    sheet_name=None 是关键参数,表示读取 Excel 文件中的所有工作表
  • • 返回值
    返回一个字典,结构如下:
    {
        "销售部"
    : DataFrame(销售部的数据),
        "市场部"
    : DataFrame(市场部的数据),
        "研发部"
    : DataFrame(研发部的数据),
        "财务部"
    : DataFrame(财务部的数据)
    }
    • • 字典的是 Sheet 名称
    • • 字典的是对应的 DataFrame

💡 小贴士:如果不指定 sheet_name,默认只读取第一个 Sheet。sheet_name=None 让我们一次性读取所有 Sheet,避免多次调用 pd.read_excel()


第三步:创建列表存放转换后的 DataFrame

all_dfs = []

代码解释:

  • • all_dfs = []
    创建一个空列表,用于存放每个 Sheet 转换后的一维表 DataFrame。最后用 pd.concat() 一次性合并所有数据。

第四步:遍历并转换每个工作表

for sheet_name, df in sheets_dict.items():
    # 1. 处理多级表头

    # 获取列名:第一行(月份)

    months = df.iloc[0, 1:].tolist()  # 从第2列开始是月份
    # 获取项目列(第一列)

    projects = df.iloc[1:, 0].tolist()  # 从第2行开始是项目
    # 获取数据区域(数值)

    values = df.iloc[1:, 1:].values

关于 iloc 索引规则

pandas中DataFrame的索引规则:

  • • 行号和列号都是从0开始计数
  • • df.iloc[0, 1] 表示第1行第2列
  • • df.iloc[1:, 0] 表示从第2行到最后,第1列

关于 iloc 和 loc 索引规则

pandas 中 DataFrame 的两种核心索引方式:

索引方式
基于
特点
iloc整数位置
类似 Python 列表,从0开始
loc标签/名称
使用行名/列名

逐行解释

months = df.iloc[0, 1:].tolist()

取第1行、从第2列开始的所有数据作为月份。

示例(销售部数据):

原表第1行(行索引0):
["项目", "1月", "2月", "3月", "4月", "5月", "6月"]

df.iloc[0, 1:] 取到:
["1月", "2月", "3月", "4月", "5月", "6月"]

最终 months = ["1月", "2月", "3月", "4月", "5月", "6月"]

projects = df.iloc[1:, 0].tolist()

取第2行到最后、第1列的所有数据作为项目。

示例

原表第1列(列索引0):
["项目", "收入", "成本", "利润", "管理费用", "销售费用"]

df.iloc[1:, 0] 取到(跳过第1行的"项目"):
["收入", "成本", "利润", "管理费用", "销售费用"]

最终 projects = ["收入", "成本", "利润", "管理费用", "销售费用"]

values = df.iloc[1:, 1:].values

取第2行到最后、第2列到最后的数值区域。

示例

原表数据区域(5行×6列):
收入: [23795, 8860, 13390, 19964, 19284, 14265]
成本: [5466, 9426, 10578, 16636, 16363, 16111]
利润: [1130, 2685, 1769, 3391, 6611, 7949]
管理费用: [2933, 1715, 1455, 2824, 1684, 959]
销售费用: [3885, 521, 2800, 1247, 3404, 974]

.values 将其转换为 numpy 数组,方便按索引取值

第五步:为当前 Sheet 构建临时数据

    # 2. 为当前 Sheet 构建临时数据
    temp_data = []
    for
 i, project in enumerate(projects):
        for
 j, month in enumerate(months):
            temp_data.append({
                "部门"
: sheet_name,
                "项目"
: project,
                "月份"
: month,
                "金额"
: values[i, j]
            })

逐层解析

enumerate(projects):

enumerate 为项目列表添加索引,返回 (索引, 值) 的配对。

示例

projects = ["收入", "成本", "利润", "管理费用", "销售费用"]
list
(enumerate(projects))
# 结果:[(0, "收入"), (1, "成本"), (2, "利润"), (3, "管理费用"), (4, "销售费用")]

外层 for 循环

for i, project in enumerate(projects):
  • • i:项目索引(0, 1, 2, 3, 4)
  • • project:项目名称("收入", "成本", ...)

内层 for 循环

for j, month in enumerate(months):
  • • j:月份索引(0, 1, 2, 3, 4, 5)
  • • month:月份名称("1月", "2月", ...)

第4层:构建记录

temp_data.append({
    "部门"
: sheet_name,
    "项目"
: project,
    "月份"
: month,
    "金额"
: values[i, j]
})
  • • values[i, j] 取出对应项目+月份交叉点的数值
  • • 每循环一次生成一条记录(一个字典),追加到 temp_data 列表

执行过程示意(以“销售部”为例):

循环轮次
i
project
j
month
values[i,j]
生成的记录
1
0
收入
0
1月
23795
销售部-收入-1月-23795
2
0
收入
1
2月
8860
销售部-收入-2月-8860
3
0
收入
2
3月
13390
销售部-收入-3月-13390
...
...
...
...
...
...
...
6
0
收入
5
6月
14265
销售部-收入-6月-14265
7
1
成本
0
1月
5466
销售部-成本-1月-5466
...
...
...
...
...
...
...
30
4
销售费用
5
6月
974
销售部-销售费用-6月-974

总计:5个项目 × 6个月 = 30条记录


第六步:将当前 Sheet 转为 DataFrame 并收集

    # 3. 将当前 Sheet 的数据转为 DataFrame
    temp_df = pd.DataFrame(temp_data)
    all_dfs.append(temp_df)

代码解释:

  • • pd.DataFrame(temp_data)
    将字典列表转换为 DataFrame,字典的键变成列名,值变成行数据。
  • • all_dfs.append(temp_df)
    将当前 Sheet 转换后的 DataFrame 添加到 all_dfs 列表中。

此时 all_dfs 的结构

all_dfs = [
    DataFrame_销售部,   # 30行 × 4列
    DataFrame_市场部,   # 30行 × 4列
    DataFrame_研发部,   # 30行 × 4列
    DataFrame_财务部    # 30行 × 4列
]

第七步:合并所有数据

# 4. 使用 pd.concat() 合并所有 Sheet 的数据
result_df = pd.concat(all_dfs, ignore_index=True)

代码解释:

  • • pd.concat(all_dfs, ignore_index=True)
    pd.concat() 是 pandas 中用于合并多个 DataFrame 的核心函数。
    • • 第一个参数传入 DataFrame 列表
    • • ignore_index=True 表示重新生成行索引(0,1,2...),避免多个 DataFrame 的原始索引冲突

合并过程示意

DataFrame_销售部 (30行)
        +
DataFrame_市场部 (30行)
        +
DataFrame_研发部 (30行)
        +
DataFrame_财务部 (30行)
        ↓
  pd.concat()
        ↓
result_df (120行)

💡 小贴士pd.concat() 默认是纵向堆叠(axis=0),这正好符合我们的需求——把多个 Sheet 的数据上下拼接起来。


第八步:保存结果

# 5. 保存结果
result_df.to_excel("规范一维表.xlsx", index=False)
print
("✅ 转换完成,已保存为 规范一维表.xlsx")

代码解释:

  • • to_excel(..., index=False)
    保存为 Excel 文件,index=False 表示不额外添加行号列。

运行结果预览

生成的 规范一维表.xlsx 内容如下(部分展示):

部门
项目
月份
金额
销售部
收入
1月
23795
销售部
收入
2月
8860
销售部
收入
3月
13390
销售部
收入
4月
19964
销售部
收入
5月
19284
销售部
收入
6月
14265
销售部
成本
1月
5466
销售部
成本
2月
9426
...
...
...
...
财务部
销售费用
6月
3477

总计:4个部门 × 5个项目 × 6个月 = 120行数据


为什么需要这种转换?

原始格式(交叉表)的局限

项目
1月
2月
3月
收入
100
150
200
成本
80
90
110

这种格式适合人阅读,但想分析“收入在3个月的趋势”时:

  • • 无法直接用 groupby 按月份汇总
  • • 无法方便地画折线图
  • • 与其它表关联困难

转换后(一维表)的优势

项目
月份
金额
收入
1月
100
收入
2月
150
收入
3月
200
成本
1月
80
成本
2月
90
成本
3月
110

转换后,可以轻松实现:

# 按项目汇总
result_df.groupby("项目")["金额"].sum()

# 按月份汇总

result_df.groupby("月份")["金额"].sum()

# 画收入趋势图

df_income = result_df[result_df["项目"]=="收入"]
df_income.plot(x="月份", y="金额")

# 与其它表关联

pd.merge(result_df, 部门信息表, on="部门")

📚 本期核心知识点

📍 知识点 1:pd.read_excel() 的 sheet_name=None 参数

一次性读取 Excel 文件中的所有工作表,返回 {Sheet名: DataFrame} 字典,是批量处理多表数据的标准写法。

📍 知识点 2:df.iloc[] 整数位置索引

  • • df.iloc[0, 1:]:取第1行,从第2列开始
  • • df.iloc[1:, 0]:取第2行到最后,第1列
  • • df.iloc[1:, 1:]:取第2行到最后,第2列到最后

适用于处理固定格式的多级表头数据。

📍 知识点 3:enumerate() 同时获取索引和值

for i, project in enumerate(projects):
    # i 是索引(0,1,2...)

    # project 是项目名称

📍 知识点 4:字典列表转 DataFrame

temp_data = [{"部门": "销售部", "项目": "收入", ...}, ...]
temp_df = pd.DataFrame(temp_data)  # 键变列名,值变行

📍 知识点 5:pd.concat() 纵向合并多个 DataFrame

all_dfs = [df1, df2, df3, ...]  # DataFrame 列表
result = pd.concat(all_dfs, ignore_index=True)  # 纵向堆叠
  • • ignore_index=True 重新生成行索引,避免冲突

📍 知识点 6:双层循环拆解交叉表

外层循环遍历项目,内层循环遍历月份,将每个“项目×月份”组合拆成独立的一行,是交叉表转一维表的通用逻辑。


🔄 本案例核心流程

① 读取所有 Sheet → ② 遍历每个 Sheet → ③ 提取月份和项目 → ④ 双层循环拆解 → ⑤ 转为临时 DataFrame → ⑥ 收集到列表 → ⑦ 用 pd.concat() 合并 → ⑧ 保存结果

读取所有 Sheet (pd.read_excel(sheet_name=None))
        ↓
创建空列表存放 DataFrame (all_dfs = [])
        ↓
遍历每个 Sheet (for sheet_name, df in sheets_dict.items())
        ↓
提取月份 (df.iloc[0, 1:].tolist())
提取项目 (df.iloc[1:, 0].tolist())
提取数值 (df.iloc[1:, 1:].values)
        ↓
双层循环拆解 (for i, project in enumerate(projects):
                    for j, month in enumerate(months))
        ↓
收集为临时字典列表 (temp_data.append({...}))
        ↓
转为临时 DataFrame (temp_df = pd.DataFrame(temp_data))
        ↓
添加到列表 (all_dfs.append(temp_df))
        ↓
合并所有 DataFrame (result_df = pd.concat(all_dfs, ignore_index=True))
        ↓
保存结果 (result_df.to_excel("规范一维表.xlsx", index=False))

📦 资源获取提示

关注「码农自习室」,后台回复关键词 PythonExcel案例,即可获取本文完整代码及配套练习数据集,一起动手掌握高效数据操作的核心技巧!


❤️ 支持我们

如果本文对你有帮助,欢迎点赞 + 关注 + 点亮小红心,你的支持就是我们持续创作的最大动力~

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-17 17:38:07 HTTP/2.0 GET : https://h.sjds.net/a/489098.html
  2. 运行时间 : 0.080105s [ 吞吐率:12.48req/s ] 内存消耗:4,355.96kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=95df29e8588b9fb5ca307de703c43b91
  1. /yingpanguazai/ssd/ssd1/www/h.sjds.net/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/h.sjds.net/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/h.sjds.net/runtime/temp/ad153693ed39fba6d1bda2fe72512cde.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000624s ] mysql:host=127.0.0.1;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000937s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000350s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000297s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000613s ]
  6. SELECT * FROM `set` [ RunTime:0.000235s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000522s ]
  8. SELECT * FROM `article` WHERE `id` = 489098 LIMIT 1 [ RunTime:0.001117s ]
  9. UPDATE `article` SET `lasttime` = 1776418687 WHERE `id` = 489098 [ RunTime:0.002011s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000222s ]
  11. SELECT * FROM `article` WHERE `id` < 489098 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000428s ]
  12. SELECT * FROM `article` WHERE `id` > 489098 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000396s ]
  13. SELECT * FROM `article` WHERE `id` < 489098 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001863s ]
  14. SELECT * FROM `article` WHERE `id` < 489098 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002042s ]
  15. SELECT * FROM `article` WHERE `id` < 489098 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001150s ]
0.081684s