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

如何用Python将时间序列转为展示各元素出现次数的两列DataFrame

方法1:基于Pandas实现

逻辑简单,4行代码即可完成需求,自动适配不同长度的行,无需手动处理缺失值:

import pandas as pd

# 替换为你的实际文件路径
df = pd.read_csv("data.txt", sep=r"\s+", header=None)
# 排除每行第一个时间索引列,展平所有数值后统计频次,按数值升序排序
res = df.iloc[:, 1:].stack().value_counts().sort_index()
# 输出为空格分隔的两列格式
print(res.to_csv(sep=" ", header=False))

逻辑说明:

  • iloc[:, 1:] 跳过每行第一个时间索引列,符合你给出的示例统计规则
  • stack() 将不规则的多列数据压缩为一维Series,自动忽略空值
  • value_counts() 直接统计每个数值的出现次数
  • sort_index() 按数值升序排列,和示例输出顺序一致

方法2:基于Numpy实现

适合偏好Numpy工具栈的场景:

import numpy as np

# 替换为你的实际文件路径
lines = np.genfromtxt("data.txt", dtype=str, delimiter="\n")
all_nums = []
for line in lines:
    # 拆分每行转为整数,跳过第一个索引值
    nums = list(map(int, line.split()))[1:]
    all_nums.extend(nums)
# 去重并统计频次,默认按数值升序返回
values, counts = np.unique(all_nums, return_counts=True)
# 打印输出
for v, c in zip(values, counts):
    print(v, c)

两种方法运行你提供的示例数据,输出结果和预期完全一致。

内容的提问来源于stack exchange,提问作者ejl62

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:48:00