¿Cómo puedo hacer un bucle para obtener la lista de nombres de lista?

import numpy as np
import pandas as pd
df = pd.read_csv('census.csv')
data = ['SUMLEV','STNAME', 'CTYNAME', 'CENSUS2010POP']
df=df[data]
adf = df[df['SUMLEV']==50]
adf.set_index('STNAME', inplace=True)
states = np.array(adf.index.unique())
vlist =list()
vlist.append(adf.loc[states[0]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[1]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[2]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[3]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[4]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[5]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[6]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[7]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
vlist.append(adf.loc[states[7]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
   
print(vlist)

Salida:

[1406269, 478402, 5173150, 807152, 15924150, 1794424, 2673320, 897934, 897934]
-6
Joe 27 ago. 2020 a las 13:53

2 respuestas

La mejor respuesta

Mira esto. Comprensión de listas

import numpy as np
import pandas as pd
df = pd.read_csv('census.csv')
data = ['SUMLEV','STNAME', 'CTYNAME', 'CENSUS2010POP']
df=df[data]
adf = df[df['SUMLEV']==50]
adf.set_index('STNAME', inplace=True)
states = np.array(adf.index.unique())


vlist=[adf.loc[states[i]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum() for i in range(0,7)]
0
Michał M 27 ago. 2020 a las 12:11

Creo que quiere saber cómo puede crear un bucle para sus declaraciones de adición. Puede cambiar su código para incluir el ciclo de la siguiente manera:

import numpy as np
import pandas as pd
df = pd.read_csv('census.csv')
data = ['SUMLEV','STNAME', 'CTYNAME', 'CENSUS2010POP']
df=df[data]
adf = df[df['SUMLEV']==50]
adf.set_index('STNAME', inplace=True)
states = np.array(adf.index.unique())

vlist =list()

for i in range(8):
  vlist.append(adf.loc[states[i]]['CENSUS2010POP'].sort_values(ascending =False).head(3).sum())
   
print(vlist)

Si no ayuda, especifique más su pregunta y también proporcione un ejemplo mínimo y reproducible de su código https: // stackoverflow .com / help / minimal-reproducible-example.

0
Kim Tang 27 ago. 2020 a las 11:07
63614491