我有这个功能:
bas
我正在使用此功能查找每个十年中的头号婴儿名字。我想创建一个循环,以查找从1950年开始的每个十年的姓氏(男性和女性)。我试图创建一个for循环,但是我很难使它与多个变量一起使用。
我想要简单的东西,像这样:
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]
也许我的decadeList可以有开始年,结束年和性别?这可能吗?我正在尝试保持这种非常简单/入门的方法。
答案 0 :(得分:1)
我将创建一个包含3列的数据框:decade, f_name, m_name
。您只需要遍历decadeList
,获取两性的姓氏并将新记录包括到数据框中。
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]