在pandas中循环调用局部变量

时间:2018-05-25 19:34:18

标签: python pandas local

所以,我想要做的就是获得该类别的每一个独特价值' Nombre Capitulo'我的数据框架,对于每一个Nombre Partida' (' Nombre Capitulo'是Nombre Partida'的子类别)。我的方法是为每个Nombre Partida'创建本地数据帧。然后提取Nombre Capitulo' Nombre Capitulo的独特价值。对于他们每个人。 所以,我的问题是双重的: 1.有更多的Pythonic方法吗? 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

有什么想法吗? 在此先感谢,并抱歉变量中的西班牙语名称,希望它是可以理解的, 涓

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我相信您可以在此处使用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 Capitulo返回一系列Nombre Partida的所有唯一值:

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