You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求实现每秒统计True/False数量并生成指定HTML表格结果

按秒统计True/False数量并生成指定HTML的解决方案

嘿,我来帮你搞定这个按秒统计布尔值数量并生成目标HTML的需求!下面我分两种方案给你实现——一种是用pandas(处理时间序列统计最高效的工具),另一种是纯Python实现,你可以根据自己的环境选择。

方案一:用Pandas快速处理(推荐)

如果你的数据量比较大,或者已经在使用pandas,这个方案会非常省心:

import pandas as pd

# 替换成你实际的数据源,比如读取CSV:df = pd.read_csv('your_data.csv', parse_dates=['timestamp'])
data = {
    'timestamp': pd.to_datetime([
        '2024-05-20 12:00:00.123', '2024-05-20 12:00:00.456',
        '2024-05-20 12:00:00.789', '2024-05-20 12:00:01.234',
        '2024-05-20 12:00:01.567', '2024-05-20 12:00:02.890'
    ]),
    'value': [True, False, True, False, False, True]
}
df = pd.DataFrame(data)

# 将时间戳截断到秒级,作为分组依据
df['second'] = df['timestamp'].dt.floor('S')

# 按秒分组统计核心指标:总样本数、True数量、False数量
stats = df.groupby('second').agg(
    total_samples=('value', 'count'),
    total_true=('value', lambda x: x.sum()),  # True在Python中等价于1,sum就是数量
    total_false=('value', lambda x: len(x) - x.sum())
).reset_index()

# 构建你需要的HTML结构
html_start = """<html>
<head>
</head>
<body>
<h2>audi</h2>
<table>
<thead>
<tr>
<th>Total of samples per second</th>
<th>Time</th>
<th>Total of TRUE</th>
<th>Total of FALSE</th>
</tr>
</thead>
<tbody>
"""

# 生成表格每一行的HTML
table_rows = []
for _, row in stats.iterrows():
    row_html = f"""<tr>
<td>{row['total_samples']}</td>
<td>{row['second'].strftime('%Y-%m-%d %H:%M:%S')}</td>
<td>{row['total_true']}</td>
<td>{row['total_false']}</td>
</tr>"""
    table_rows.append(row_html)

html_end = """</tbody>
</table>
</body>
</html>"""

# 合并所有部分得到最终HTML
final_html = html_start + '\n'.join(table_rows) + html_end

# 可以直接打印结果,或者保存为HTML文件
print(final_html)
# 保存文件:
# with open('audi_stats.html', 'w', encoding='utf-8') as f:
#     f.write(final_html)

方案二:纯Python实现(无需第三方库)

如果你的环境不能安装pandas,纯Python也能轻松搞定:

from datetime import datetime

# 替换成你实际的数据列表,每个元素包含timestamp和value
data = [
    {'timestamp': '2024-05-20 12:00:00.123', 'value': True},
    {'timestamp': '2024-05-20 12:00:00.456', 'value': False},
    {'timestamp': '2024-05-20 12:00:00.789', 'value': True},
    {'timestamp': '2024-05-20 12:00:01.234', 'value': False},
    {'timestamp': '2024-05-20 12:00:01.567', 'value': False},
    {'timestamp': '2024-05-20 12:00:02.890', 'value': True},
]

# 按秒分组统计
second_stats = {}
for item in data:
    # 解析时间戳并去掉微秒,得到秒级时间键
    dt = datetime.strptime(item['timestamp'], '%Y-%m-%d %H:%M:%S.%f')
    second_key = dt.replace(microsecond=0)
    
    # 初始化该秒的统计数据
    if second_key not in second_stats:
        second_stats[second_key] = {'total': 0, 'true': 0, 'false': 0}
    
    # 更新统计
    second_stats[second_key]['total'] += 1
    second_stats[second_key]['true'] += 1 if item['value'] else 0
    second_stats[second_key]['false'] += 0 if item['value'] else 1

# 构建HTML结构(和方案一完全一致)
html_start = """<html>
<head>
</head>
<body>
<h2>audi</h2>
<table>
<thead>
<tr>
<th>Total of samples per second</th>
<th>Time</th>
<th>Total of TRUE</th>
<th>Total of FALSE</th>
</tr>
</thead>
<tbody>
"""

table_rows = []
# 按时间顺序排序后生成行
for time, stats in sorted(second_stats.items()):
    row_html = f"""<tr>
<td>{stats['total']}</td>
<td>{time.strftime('%Y-%m-%d %H:%M:%S')}</td>
<td>{stats['true']}</td>
<td>{stats['false']}</td>
</tr>"""
    table_rows.append(row_html)

html_end = """</tbody>
</table>
</body>
</html>"""

final_html = html_start + '\n'.join(table_rows) + html_end

print(final_html)

关键说明

  1. 时间处理:核心是把时间戳截断到秒级,这样才能把同一秒内的所有数据归为一组;
  2. 统计逻辑:True在Python中可以被当作1计算,所以直接sum就能得到True的数量,总样本数减True数量就是False数量;
  3. HTML结构:完全按照你给出的模板生成,包括<h2>audi</h2>和指定的表头,输出的HTML可以直接在浏览器打开查看。

内容的提问来源于stack exchange,提问作者Jakub Oškera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:36:50