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

求助:如何按Set和Game对Pandas的market列实现正确排序?

解决Pandas按Set和Game顺序排序Market列的问题

没问题,我来帮你搞定这个排序难题!Pandas自带的sort_values()之所以没达到预期效果,是因为它默认把market列当成字符串来排序——字符串排序是按字符逐个比较的,所以"Game 10"会排在"Game 2"前面,这显然不是咱们要的按数字大小排序的结果。

咱们可以通过以下步骤实现按Set和Game的数字顺序排序:

步骤1:提取Set和Game的数字

先从market列里把Set和Game对应的数字提取出来,转换成整数类型,方便后续排序:

import pandas as pd

# 假设你的数据框是df
df[['Set', 'Game']] = df['market'].str.extract(r'Set (\d+), Game (\d+)').astype(int)

这段代码用正则表达式r'Set (\d+), Game (\d+)'从字符串里匹配出Set和Game后面的数字,然后转换成整数存入新的Set和Game列。

步骤2:按新列排序

现在就可以用这两个整数列来排序了,先按Set升序,再按Game升序:

df_sorted = df.sort_values(by=['Set', 'Game'])

步骤3:(可选)删除临时列

如果不需要保留Set和Game这两个临时列,可以用下面的代码删掉:

df_sorted = df_sorted.drop(columns=['Set', 'Game'])

完整示例

把这些步骤整合起来,针对你的数据的完整代码大概是这样:

import pandas as pd

# 模拟你的数据
data = {
    'market': [
        'Game Winner (Set 1, Game 1)',
        'Game Winner (Set 1, Game 10)',
        'Game Winner (Set 1, Game 11)',
        'Game Winner (Set 1, Game 12)'
    ],
    'stake': [1605.50, 2825.00, 700.00, 1500.00],
    'profit': [-1020.30, 85.42, 100.00, 200.00]
}
df = pd.DataFrame(data)

# 提取数字列
df[['Set', 'Game']] = df['market'].str.extract(r'Set (\d+), Game (\d+)').astype(int)

# 排序
df_sorted = df.sort_values(by=['Set', 'Game']).drop(columns=['Set', 'Game'])

print(df_sorted)

运行之后你就能得到按Set和Game数字顺序排列的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:32:56