Tenho esta função:
def get_topName(dataset, start_year, end_year, sex):
subset = dataset[(dataset.year >= start_year) & (dataset.year <= end_year) & (dataset.sex == sex)]
subset1 = subset.drop(columns=['year', 'prop', 'per1000'])
subset2 = subset1.groupby("name", as_index=False).n.sum()
subset3 = subset2.sort_values("n" , ascending = False)
return subset3[0:1]
Estou usando esta função para encontrar os principais nomes de bebês em cada década. Quero criar um loop que localizará os nomes principais (masculino e feminino) para cada década começando em 1950. Tentei fazer um loop for, mas estou tendo problemas para fazê-lo funcionar com várias variáveis.
Eu quero algo simples, como isto:
for x in decadeList:
names = get_topName(baby_df, start_year, end_year, sex)
return names
E talvez minha lista de décadas pudesse ter um ano de início, um ano de fim e sexo? Isso é possível? Estou tentando manter esses métodos muito simples / iniciante.
Gostaria de criar uma trama de dados com 3 colunas: decade, f_name, m_name
. Você só precisa fazer um loop decadeList
, obter os nomes principais de ambos os sexos e incluir o novo registro no dataframe.
import pandas as pd
def get_topName(dataset, start_year, end_year, sex):
subset = dataset[(dataset.year >= start_year) & (dataset.year <= end_year) & (dataset.sex == sex)]
subset1 = subset.drop(columns=['year', 'prop', 'per1000'])
subset2 = subset1.groupby("name", as_index=False).n.sum()
subset3 = subset2.sort_values("n" , ascending = False)
return subset3[0]
columns = ['decade', 'f_name', 'm_name']
top_names_df = pd.DataFrame(columns=columns)
for decade in decadeList:
f_name = get_topName(baby_df, decade, decade+10, female_sex)
m_name = get_topName(baby_df, decade, decade+10, male_sex)
top_names_df.loc[len(top_names_df)] = [deacade, f_name, m_name]
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras