我有以下数据框
import pandas as pd
newd = {'year': [2001, 2002, 2005, 2002, 2004, 2001, 2001, 2002, 2003, 2003, 2002, 2002, 2003, 2004, 2005, 2003, 2004, 2005, 2004, 2004 ],
'indviduals': [12, 23, 24, 28,30, 15, 17, 18, 18, 19, 12, 15, 12, 12, 12, 15, 15, 15, 12, 12],
'employers': ['a', 'b', 'c', 'd', 'e', 'a', 'a', 'b', 'b', 'c', 'b', 'a', 'c', 'd', 'e', 'a', 'a', 'a', 'a', 'b'] }
newdf=newdf=pd.DataFrame(newd)
我的预期结果(仅作为示例):
2001, a: [12, 15, 17] count:3 employerchanged: []
2002, b: [12, 23, 28] count:3 employerchanged: [12]
2002, a: [15] count:1
在SQL中完成此操作很容易。但是SQL不会告诉我个人'12'是否在2001年至2002年之间更换了雇主。
这是我到目前为止在python中尝试过的内容:
dic={}
listofUniqueYears= [i for i in newdf.year.unique()]
#给了我独特的年份列表
dic={}
for i in listofUniqueYears:
dic[i]=defaultdict(dict)
print(dic)
我的问题是我如何根据提供的条件过滤行值,在这种情况下,我希望每个员工每年要有雇员人数,人数和变更的雇员。
答案 0 :(得分:0)
您可以应用分组依据来获取每位员工每年的唯一雇主数。
df = newdf.groupby(['year','indviduals']).agg({'employers':'nunique'}).reset_index()
df[df.year == 2004]
如果您需要根据所需的计数总和,还可以应用进一步的汇总。