字典如下,显示了当月的团队成员姓名:
team_month = {
'TeamAAug' : ["William","Harper","Elijah","James"] ,
'TeamAOct' : ["William","Mason","Harper","Elijah","James"] ,
'TeamASep' : ["William","Mason","Elijah","James"] ,
'TeamBAug' : ["Mia","Emma","Charlotte","Sophia"] ,
'TeamBOct' : ["Mia","Sophia"] ,
'TeamBSep' : ["Emma","Charlotte","Sophia"]}
以下数据框显示每个人是否获得了当月的奖金:
我要计算每个团队每个月有多少奖金。理想的结果应该是这样的:
TeamAAug : 3
TeamAOct : 3
TeamASep : 0
TeamBAug : 2
TeamBOct : 1
TeamBSep : 0
我能想到和尝试过的:
import pandas as pd
team_month = {
'TeamAAug' : ["William","Harper","Elijah","James"] ,
'TeamAOct' : ["William","Mason","Harper","Elijah","James"] ,
'TeamASep' : ["William","Mason","Elijah","James"] ,
'TeamBAug' : ["Mia","Emma","Charlotte","Sophia"] ,
'TeamBOct' : ["Mia","Sophia"] ,
'TeamBSep' : ["Emma","Charlotte","Sophia"]}
data = {'Name': ["William","Mason","Harper","Elijah","James","Mia","Emma","Charlotte","Sophia",],
'Aug' : ["Bonus","","Bonus","","Bonus","","Bonus","","Bonus",],
'Sep': ["","","","","","Bonus","","","",],
'Oct' : ["Bonus","","","Bonus","Bonus","","","","Bonus",]}
df = pd.DataFrame(data)
name_month_dict = df.set_index('Name').T.to_dict('dict')
for key, values in team_month.items():
for v in values:
print (v + key[-3:])
上面给了我每个人每月奖金的字典。
“name_month_dict”的输出:
{'William': {'Aug': 'Bonus', 'Sep': '', 'Oct': 'Bonus'}, 'Mason': {'Aug': '', 'Sep': '', 'Oct': ''}, 'Harper': {'Aug': 'Bonus', 'Sep': '', 'Oct': ''}...}
以及带有月份的名称:
WilliamAug
HarperAug
ElijahAug
…
我该如何继续?
答案 0 :(得分:2)
让我们尝试在 loc
推导式中使用 dict
进行查找:
l = df.set_index('Name') # lookup dataframe
{k: l.loc[v, k[-3:]].eq('Bonus').sum() for k, v in team_month.items()}
{'TeamAAug': 3,
'TeamAOct': 3,
'TeamASep': 0,
'TeamBAug': 2,
'TeamBOct': 1,
'TeamBSep': 0}