Python 使用value_couts()后如何从数据框中选择特定数据?

Python 使用value_couts()后如何从数据框中选择特定数据?,python,Python,我用python读取了一个包含婴儿姓名、性别和出生年份的文件。现在我想找出男孩和女孩都用的名字。我使用value_counts获取每个名称的出现时间,但现在我不知道如何从所有名称中提取名称。 这是我的密码: def names_both(year): names = [] path = 'babynames/yob%d.txt' % year columns = ['name', 'sex', 'birth'] frame = pd.read_csv(path,

我用python读取了一个包含婴儿姓名、性别和出生年份的文件。现在我想找出男孩和女孩都用的名字。我使用value_counts获取每个名称的出现时间,但现在我不知道如何从所有名称中提取名称。 这是我的密码:

def names_both(year):
    names = []
    path = 'babynames/yob%d.txt' % year
    columns = ['name', 'sex', 'birth']
    frame = pd.read_csv(path, names=columns)
    frame = frame['name'].value_counts()
    print(frame)
    """if len(names) != 0:
        print(names)
    else:
        print('None')"""

现在的框架是这样的:

Lou          2
Willie       2
Erie         2
Cora         2
            ..
Perry        1
Coy          1
Adolphus     1
Ula          1
Emily        1
Name: name, Length: 1889, dtype: int64
以下是csv:

Anna,F,2604
Emma,F,2003
Elizabeth,F,1939
Minnie,F,1746
Margaret,F,1578
Ida,F,1472
Alice,F,1414
Bertha,F,1320
Sarah,F,1288
Annie,F,1258
Clara,F,1226
Ella,F,1156
Florence,F,1063
...

谢谢你的帮助

我们在这里计算给女孩和男孩的名字的数量:

普通女孩和男孩的名字= 工作名称 frame.groupby'name' 计算为姓名指定的性别数,并保留为两种性别指定的性别数,此布尔值将放在列调用0中 .applylambda x:lenx['sex'].unique==2 名称现在位于索引中,请重置它以获取名称 .reset_索引 仅保留列为0且值为True的名称 .loc[lambda x:x[0],“名称”] 最终_df= 只保留该系列之前构建的男孩和女孩的通用名称 frame.loc[frame['name'].isincommon_girl_和_boys_name,:] 性现在是无用的 .drop['sex'],axis='columns' 按姓名列出工作名称,并将出生人数相加 .groupby'name' 总和
您可以将这些行放在read_csv函数之后。我希望它是您想要的。

您能添加一个csv的小摘录吗?@ndclt当然,给您。太好了!它工作得很好。非常感谢。但是我需要一些时间来完全理解代码。无论如何,非常感谢!