Python 分别计算男性和女性宿舍

Python 分别计算男性和女性宿舍,python,csv,Python,Csv,我想要的结果是这样的 (males {1990: {Q1:value, Q2:value, Q3:Value, Q4: Value}, females {Q1:value, Q2:value, Q3:Value, Q4:value}) 如果没有任何值,则默认值为0 import csv male_count = {} female_count = {} with open('1000 Records.csv') as csv_file: csv_reader = c

我想要的结果是这样的

(males {1990: {Q1:value, Q2:value, Q3:Value, Q4: Value}, 
 females {Q1:value, Q2:value, Q3:Value, Q4:value})
如果没有任何值,则默认值为0

import csv
male_count = {}
female_count = {}


 with open('1000 Records.csv') as csv_file:
    
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        
        year_of_joining = int(row[17])
        quarter_of_joining = row[15]
        gender = row[5]
        
        if year_of_joining not in female_count and gender == 'F':
            female_count[year_of_joining] = {'Q1': 0, 'Q2': 0, 'Q3': 0, 'Q4': 0}
            female_count[year_of_joining][quarter_of_joining] = 1
        elif year_of_joining in female_count and gender == 'F':
            female_count[year_of_joining][quarter_of_joining] += 1

        if year_of_joining not in male_count and gender == 'M':
            male_count[year_of_joining] = {'Q1': 0, 'Q2': 0, 'Q3': 0, 'Q4': 0}
            male_count[year_of_joining][quarter_of_joining] = 1
        elif year_of_joining in male_count and gender == 'M':
            male_count[year_of_joining][quarter_of_joining] += 1
print(male_count)
print(female_count)

使用熊猫图书馆会让你很容易

将熊猫作为pd导入
df=pd.read\u csv('1000 Records.csv',dtype={“加入的年份”:“类别”,“加入的季度”:“类别”})
df\u out=df.groupby(索引=[“性别”、“加入的年份”、“加入的季度”],values=“性别”,aggfunc=“计数”]
out\u dict=df\u out.to\u dict()

假设您想要单独的字典,而不是“性别,按年份分组”(意思是年份是两个性别字典的顶级键),答案基本上与您的上一个问题相同,只是您有两个单独的“
结果
”dict(可以组合,因为Python对象是引用)


输入

Gender,Year of Join,Quarter of Join
F,2010,Q1
M,2010,Q2
F,2017,Q1
from pprint import pprint
print('males', end=' ')
pprint(males)
print('females', end=' ')
pprint(females)
输出

Gender,Year of Join,Quarter of Join
F,2010,Q1
M,2010,Q2
F,2017,Q1
from pprint import pprint
print('males', end=' ')
pprint(males)
print('females', end=' ')
pprint(females)

我建议使用
pandas
及其
groupby
方法。为什么你的
males
结果中有一年,而不是
males
结果中有一年?你怎么知道它不起作用?请查看并创建一个。编辑问题。因为年份是一个关键,男性和女性是它的一个值,而男性和女性也是它的一个关键将工作,但以不同的格式。我需要不同格式的结果。这会为缺少的季度添加零值吗?不太确定,但我认为答案是肯定的。如果不是,您可以添加df_out[“性别”]=df_out[“性别”]。fillna(0)在定义外字典之前,我非常感谢您的帮助,但我不想使用熊猫谢谢您的帮助兄弟,我们可以用1个dict来代替男性和女性dict吗???一切都在这1个dict中,我不知道您的要求,但您当然可以。从
result={'males':dict(),'males':dict()}开始
,然后检查
如果加入的年份没有结果[完整性别]
。剩下的逻辑应该是一样的。你也可以简单地修改我的答案,围绕其他两个字典创建一个字典,在循环之后,谢谢兄弟,添加了很多
最终结果={“男性”:男性,“女性”:女性}