Python 使用value_couts()后如何从数据框中选择特定数据?
我用python读取了一个包含婴儿姓名、性别和出生年份的文件。现在我想找出男孩和女孩都用的名字。我使用value_counts获取每个名称的出现时间,但现在我不知道如何从所有名称中提取名称。 这是我的密码: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,
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当然,给您。太好了!它工作得很好。非常感谢。但是我需要一些时间来完全理解代码。无论如何,非常感谢!