在循环中调用局部变量

2024-05-28 18:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我要做的是,为每个“Nombre Partida”(“Nombre capitalulo”是“Nombre Partida”的子类别)获取数据帧中“Nombre capitalulo”类别的每个唯一值。我的方法是为每个“Nombre Partida”创建本地数据帧,然后为每个“Nombre capitalulo”提取唯一的值。 所以,我的问题有两个: 1有没有更像Python的方法? 2如果不是,我如何调用最近创建的局部变量?我试过了,但没用:

Partidas=data1_anio['Nombre Partida'].unique()
for p in Partidas:

    locals()['%s' % p]=data1_anio.loc[data1_anio['Nombre Partida']==p]

    globals()['cap_%s' % p]= ['%s' % p]['Nombre Capitulo'].unique()

局部变量起作用,但调用它们会引发:

TypeError: list indices must be integers or slices, not str

有什么想法吗? 提前谢谢,很抱歉变量中有西班牙名字,希望可以理解, 胡安


Tags: 数据方法infor类别locunique局部变量
1条回答
网友
1楼 · 发布于 2024-05-28 18:22:46

如果我理解正确,我相信你可以在这里利用groupby。在没有看到示例数据的情况下很难进行测试,但我认为应该这样做:

data1_anio.groupby('Nombre Partida')['Nombre Capitulo'].unique()

示例:

data1_anio = pd.DataFrame({'Nombre Partida':['a', 'a', 'a', 'b', 'b', 'b'],
                           'Nombre Capitulo':['random1', 'random1', 'random2',
                                              'random3', 'random4', 'random4']})

>>> data1_anio
   Nombre Partida Nombre Capitulo
0              a         random1
1              a         random1
2              a         random2
3              b         random3
4              b         random4
5              b         random4

运行groupby为每个Nombre Partida返回一系列Nombre Capitulo的唯一值:

>>> data1_anio.groupby('Nombre Partida')['Nombre Capitulo'].unique()
Nombre Partida
a    [random1, random2]
b    [random3, random4]

相关问题 更多 >

    热门问题