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

使用Pandas将每两行网球胜率数据合并为一行生成对阵数据集

Pandas 实现逐行转换比赛胜率数据的方案

前置准备

首先导入Pandas库,读取原始数据。如果你是从csv文件读取,直接替换为pd.read_csv("你的文件路径.csv")即可:

import pandas as pd

# 示例:构造原始DataFrame,和你给出的输入格式一致
raw_df = pd.DataFrame(
    data = [
        ["player1", "35%"],
        ["player2", "65%"],
        ["player3", "20%"],
        ["player4", "80%"],
        ["player5", "90%"],
        ["player6", "10%"]
    ],
    columns = ["player", "probability_of_win"]
)

数据转换实现

方案1:分组聚合(逻辑直观,适合需要额外处理分组数据的场景)

核心逻辑是给每两行(同一场比赛)分配相同的分组ID,再按分组聚合出两个选手的信息:

# 按索引每两行分为一组,生成比赛ID
raw_df["match_id"] = raw_df.index // 2

# 按比赛ID聚合,分别取出每组的第1、2位选手信息
result_df = raw_df.groupby("match_id").agg(
    playerA = ("player", "first"),
    playerB = ("player", "last"),
    probability_of_win_A = ("probability_of_win", "first"),
    probability_of_win_B = ("probability_of_win", "last")
).reset_index(drop=True)

方案2:数组重塑(执行效率高,适合大数据量场景)

核心逻辑是把原始二维数组按每两行一组重塑,直接生成目标结构的DataFrame:

# 把原始数据按每两行一组重塑,每行4个元素对应目标表的4列
reshaped_arr = raw_df.values.reshape(-1, 4)
# 生成结果DataFrame并调整列顺序
result_df = pd.DataFrame(
    reshaped_arr,
    columns = ["playerA", "probability_of_win_A", "playerB", "probability_of_win_B"]
)[["playerA", "playerB", "probability_of_win_A", "probability_of_win_B"]]

输出验证

打印result_df即可得到你需要的目标格式:

playerAplayerBprobability_of_win_Aprobability_of_win_B
player1player235%65%
player3player420%80%
player5player690%10%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:45:04