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

如何用Pandas按MinP和MaxP两列组合分组并统计出现次数?

解决方案

要实现按MinP和MaxP两列的组合分组并统计次数,用pandas可以轻松完成,以下是具体步骤:

基础实现步骤

1. 读取CSV数据

首先导入pandas并读取你的CSV文件:

import pandas as pd

# 替换成你的CSV文件路径
df = pd.read_csv("your_data.csv")

2. 按双列分组统计

使用groupby同时指定MinP和MaxP两列作为分组键,再用size()统计每组的出现次数:

# 分组后得到带MultiIndex的Series,索引是(MinP值, MaxP值),值为对应计数
grouped_counts = df.groupby(["MinP", "MaxP"]).size()

# 如果需要转换成DataFrame格式(更直观)
grouped_df = grouped_counts.reset_index(name="count")

3. 生成类似State1(0,0)的标签

如果需要给每个组合添加StateX编号并拼接成指定格式的标签,可对分组后的DataFrame做进一步处理:

# 为每行生成State标签,编号从1开始
grouped_df["state_label"] = grouped_df.apply(
    lambda row: f"State{row.index + 1}({row['MinP']}, {row['MaxP']})",
    axis=1
)

# 查看最终结果(只保留标签和计数列)
print(grouped_df[["state_label", "count"]])

更简洁的替代方法

也可以直接用value_counts()快速统计两列组合的出现次数:

counts_df = df[["MinP", "MaxP"]].value_counts().reset_index(name="count")
counts_df["state_label"] = counts_df.apply(
    lambda row: f"State{row.index + 1}({row['MinP']}, {row['MaxP']})",
    axis=1
)

关键说明

之前仅按单列MinP分组无法满足需求,因为同一MinP值可能对应多个不同的MaxP值,只有同时指定两列作为分组键,才能准确区分所有数值组合模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:04:59