在 pandas 中的循环内调用局部变量

call local variable within loop in pandas

所以,我要做的是获取数据框类别 'Nombre Capitulo' 的每个唯一值,对于每个 'Nombre Partida'('Nombre Capitulo' 是 'Nombre Partida').我的方法是为每个 'Nombre Partida' 创建本地数据帧,然后为每个 '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

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

如果我没理解错的话,相信你可以在这里利用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 returns 每个 Nombre Partida:

的一系列 Nombre Capitulo 的所有唯一值
>>> data1_anio.groupby('Nombre Partida')['Nombre Capitulo'].unique()
Nombre Partida
a    [random1, random2]
b    [random3, random4]