如何创建循环?

时间:2018-11-16 16:06:04

标签: python for-loop

我有这个功能:

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可以有开始年,结束年和性别?这可能吗?我正在尝试保持这种非常简单/入门的方法。

1 个答案:

答案 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]