这里有相当多的上下文,请耐心听我说。我将提供所有暂定代码的上下文
最近我一直在尝试使用pandas创建基于excel文件的报告。在收集和处理数据之后,我有了一个数据框架,其中包含创建报告所需的数据。我有每个队的档案。大概是这样的:
>>> ddff
COM HOURS POINTS PLANNED_DATE
0 AAA 5.0 10.00 2019-03-01
1 BBB 14.0 4.20 2019-03-01
2 AAA 18.0 289.00 2019-03-01
3 BBB 28.0 317.98 2019-03-01
4 AAA 57.0 160.00 2019-03-01
5 AAA 19.0 34.20 2019-03-01
6 AAA 24.0 112.80 2019-03-01
7 BBB 23.0 197.15 2019-03-01
8 AAA 24.0 331.00 2019-04-01
9 AAA 30.0 315.00 2019-04-30
10 BBB 23.0 490.00 2019-06-30
11 AAA 0.0 440.00 2019-04-01
13 AAA 9.0 93.00 2019-05-31
基于这些数据,我想在以下布局中创建一个excel文件:
TOTAL Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env Orq Env
TOTAL
根据以下条件进行过滤:
我基本上是在尝试自动化我所在团队的生产力计算
好的,这就是全部的上下文。现在是代码
首先,要应用第二条规则,我映射'COM'列:
ddff['COM'] = ddff['COM'].map(lambda x: 'ORQ' if x == 'AAA' else 'ENV')
然后,我基本上试着在一条语句中完成第一条、第二条和第三条规则。这可能不是正确的方法,但它非常有效:
pd.DataFrame(ddff.groupby([ddff['PLANNED_DATE'].dt.strftime('%m'),'COM']).apply(lambda x: x['POINTS'].sum()/x['HOURS'].sum())).T
对于本例,它会产生以下数据帧:
PLANNED_DATE 03 04 05 06
COM ENV ORQ ORQ ORQ ENV
0 7.989692 4.926829 20.111111 10.333333 21.304348
这正是我想要的。我可以映射计划日期,然后再做月份名称。我这里的主要问题是,我希望在这个数据帧中缺少值。例如,如果没有12月份的数据,我希望12月份的ORQ和ENV值为零
我试着用SQL的方式思考如果我可以留下一个包含00到12的表来连接这个,那么对于当前缺少的每个位置,我都会有空值。但是我找不到办法,因为.join和.merge对于包含00到12的系列似乎不起作用。或者至少我在尝试这样做时遇到了麻烦
这是我第一次和熊猫一起工作,所以可能有一些我不知道的共同功能。我在这附近读过很多关于os的答案,但仍然做不到,所以我想这是一个自己问的好时机
目前没有回答
相关问题 更多 >
编程相关推荐