在 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]
所以,我要做的是获取数据框类别 '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]