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

如何用Pandas读取Dota 2 MMR数据TXT文件为指定列DataFrame

提取交替排列的TXT数据为Pandas DataFrame(account_id与mmr列)

针对你提供的带序号、account_id和mmr交替排列的TXT文件格式,这里提供两种简单的处理方法,将数据转为包含account_id和mmr两列的Pandas DataFrame,同时自动过滤原文件中的序号。

方法一:逐行读取拆分

这种方法逻辑直观,适合新手理解:

import pandas as pd

# 读取文件,过滤空行并去除每行前后空白
with open('mmr_data.txt', 'r', encoding='utf-8') as f:
    lines = [line.strip() for line in f if line.strip()]

# 提取每行引号内的实际数据(跳过序号部分)
raw_values = [line.split('"')[1] for line in lines]

# 拆分account_id(奇数行,从第0位开始步长2)和mmr(偶数行,从第1位开始步长2)
account_ids = raw_values[::2]
mmr_list = raw_values[1::2]

# 处理可能的末尾行不匹配(比如最后一行只有account_id)
if len(account_ids) > len(mmr_list):
    mmr_list.append(None)  # 也可以替换为0或其他默认值

# 创建DataFrame并转换数值类型
df = pd.DataFrame({
    'account_id': pd.to_numeric(account_ids),
    'mmr': pd.to_numeric(mmr_list)
})

# 查看结果
print(df.head())

步骤说明:

  1. 读取文件时先过滤空行,避免无效数据干扰;
  2. 通过引号分割每行内容,直接提取引号内的账号和MMR数值,自动跳过前面的序号;
  3. 利用列表切片将交替排列的数据拆分到两个列表,分别对应account_id和mmr;
  4. 处理可能的行数不匹配问题(比如文件末尾只有单个账号无对应MMR);
  5. 最后将数据转为数值类型,方便后续分析计算。

方法二:用Pandas直接读取拆分

使用Pandas的read_csv工具,更适合处理大文件:

import pandas as pd

# 按分隔符`)`读取文件,只保留值列(跳过序号)
temp_df = pd.read_csv(
    'mmr_data.txt',
    sep='\s*\)\s*',  # 匹配序号后的`)`,忽略前后空白
    header=None,
    engine='python',
    usecols=[1]  # 只取第二列(值列)
)

# 去除值两侧的引号
temp_df[1] = temp_df[1].str.strip('"')

# 拆分奇偶行到对应列
df = pd.DataFrame({
    'account_id': temp_df[1].iloc[::2].reset_index(drop=True),
    'mmr': temp_df[1].iloc[1::2].reset_index(drop=True)
})

# 处理末尾行不匹配
if len(df['account_id']) > len(df['mmr']):
    df.loc[len(df)] = [temp_df[1].iloc[-1], None]

# 转换数值类型
df['account_id'] = pd.to_numeric(df['account_id'])
df['mmr'] = pd.to_numeric(df['mmr'])

# 查看结果
print(df.head())

步骤说明:

  1. 利用read_csv按)分割每行,直接跳过序号部分,只保留实际值;
  2. 去除值两侧的引号,得到干净的字符串数据;
  3. 用iloc切片拆分奇偶行,分别作为account_id和mmr列;
  4. 重置索引避免行列错位,同时处理可能的末尾行不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:01:01