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

Pandas循环调用局部变量问题及分组唯一值最优实现咨询

针对你的DataFrame分组获取唯一值问题的解决方案

嘿Juan,我来帮你搞定这两个问题!

1. 更Pythonic的实现方式(强烈推荐)

完全不需要手动创建一堆局部DataFrame,用pandas内置的groupby就能优雅解决需求,而且结果更易管理:

方法1:生成索引为Partida的Series

# 按"Nombre Partida"分组,提取每组"Nombre Capitulo"的唯一值
capitulos_por_partida = data1_anio.groupby('Nombre Partida')['Nombre Capitulo'].unique()

调用时直接通过索引访问即可:

# 获取指定Partida对应的所有唯一Capitulo
capitulos_por_partida['你的Partida名称']

方法2:转换成字典(更直观的调用方式)

如果更喜欢用键值对的形式访问,可以把上面的Series转成字典:

capitulos_dict = capitulos_por_partida.to_dict()
# 调用示例
capitulos_dict['你的Partida名称']

这种方式避免了创建大量零散变量,也不会出现变量名冲突或特殊字符导致的问题,是最符合Python风格的做法。

2. 修复你原代码的调用错误

你原来的代码报错是因为在获取Capitulo唯一值时,错误地用字符串列表代替了之前创建的局部DataFrame。修正后的代码如下:

Partidas = data1_anio['Nombre Partida'].unique()
for p in Partidas:
    # 创建对应Partida的局部DataFrame
    locals()[f'{p}'] = data1_anio.loc[data1_anio['Nombre Partida'] == p]
    # 正确获取该DataFrame的Nombre Capitulo唯一值(关键修正)
    globals()[f'cap_{p}'] = locals()[f'{p}']['Nombre Capitulo'].unique()

不过要注意:如果你的Nombre Partida包含空格、特殊字符(比如/、!),用它作为变量名会非常麻烦,这也是为什么更推荐第一种groupby方法的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:51:08