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

如何用Pandas从DataFrame生成三类组与用户统计报表?

Pandas 生成用户组三类报表解决方案

先构造一个贴近场景的示例DataFrame(你可以替换成自己的真实数据结构):

import pandas as pd

data = {
    "组名": ["组1", "组1", "组2", "组3", "组4"],
    "用户": ["张三", "李四", "王五", "赵六", None],
    "角色": ["A", "U", None, "U", None]
}
df = pd.DataFrame(data)

1. 无管理员的组列表

核心逻辑:找出所有组中,从未出现过角色为"A"(管理员)的组。

# 提取所有有管理员的组
admin_groups = df[df["角色"] == "A"]["组名"].unique()
# 从所有组中排除有管理员的组
no_admin_groups = df[~df["组名"].isin(admin_groups)]["组名"].unique()
# 生成报表
no_admin_report = pd.DataFrame({"无管理员的组": no_admin_groups})
print(no_admin_report)

或者用groupby更简洁:

group_has_admin = df.groupby("组名")["角色"].apply(lambda x: (x == "A").any())
no_admin_groups = group_has_admin[~group_has_admin].index.to_list()

2. 既无管理员也无成员的组列表

核心逻辑:组内既没有管理员("A"),也没有普通成员("U"),通常对应只有空记录的组。

# 按组统计是否有管理员、是否有成员
group_stats = df.groupby("组名").agg(
    有管理员=("角色", lambda x: (x == "A").any()),
    有成员=("角色", lambda x: (x == "U").any())
).fillna(False)  # 空组默认统计为False

# 筛选符合条件的组
no_admin_no_member_groups = group_stats[
    (~group_stats["有管理员"]) & (~group_stats["有成员"])
].index.to_list()

# 生成报表
no_admin_no_member_report = pd.DataFrame({"既无管理员也无成员的组": no_admin_no_member_groups})
print(no_admin_no_member_report)

3. 未加入任何组的用户列表

核心逻辑:需要先有全量用户集合,再排除所有在DataFrame中出现过的用户(已加入组的用户)。

# 替换为你的系统全量用户列表
all_users = ["张三", "李四", "王五", "赵六", "孙七", "周八"]

# 提取已加入组的非空用户
joined_users = df["用户"].dropna().unique()

# 计算未加入任何组的用户
no_group_users = [user for user in all_users if user not in joined_users]

# 生成报表
no_group_report = pd.DataFrame({"未加入任何组的用户": no_group_users})
print(no_group_report)

如果你的DataFrame是宽表结构(比如每行是用户,列是组和角色),可以先用pd.melt转成长表后再套用上面的逻辑:

# 宽表转长表示例
wide_df = pd.DataFrame({
    "用户": ["张三", "李四", "王五"],
    "组1": ["A", "U", None],
    "组2": [None, None, "U"]
})
long_df = wide_df.melt(id_vars="用户", var_name="组名", value_name="角色").dropna()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:30