储备测算过程

import numpy as np
import pandas as pd
import os
from datetime import date

downpath='/Users/Kangyongqing/Downloads/'
filename='20230810_155810.csv'

file=os.path.join(downpath,filename)

df=pd.read_csv(file)
df.to_excel(downpath+str(date.today())+'小版本补给测算.xlsx',index=False)
print(df.shape[1])
print(df.columns)

df['大版本']=df['版本'].apply(lambda x:str(x)[:2])
df.loc[df['版本']=='进阶版25分钟 P1','大版本']='进阶25分钟'
#进阶25单独替换

words=['启蒙','进阶25分钟','国际','进阶','标准','拓展','新加']
df1=df[sum(df['大版本'].str.contains(word) for word in words)>0]
pv1=df1.pivot_table(index='大版本',values=['前四周时段数','近四周时段数','完全开放可用教师数'],aggfunc={'前四周时段数':'sum','近四周时段数':'sum','完全开放可用教师数':'max'}).reset_index()
pv1['指导教师人数']=round(pv1['近四周时段数']/160,0)
pv1['增量']=round(pv1['近四周时段数']/pv1['前四周时段数']-1,4)
pv1['月消耗老师人数']=round(pv1['近四周时段数']*pv1['增量']/160,0)
pv1['剩余教师安全值']=round(pv1['指导教师人数']*0.1,0)
pv1['补充教师人数']=np.where(pv1['完全开放可用教师数']-np.where(pv1['月消耗老师人数']>0,pv1['月消耗老师人数'],0)*2-pv1['剩余教师安全值']>0,0,-(pv1['完全开放可用教师数']-np.where(pv1['月消耗老师人数']>0,pv1['月消耗老师人数'],0)*2-pv1['剩余教师安全值']))
pv1=pv1.take([0,1,3,4,7,2,5,6,8],axis=1)
print(pv1)
pv1.to_excel(downpath+str(date.today())+'大版本补给测算.xlsx',index=False)


关键点:

  1. 列字符串截取;
  2. 指定条件赋值;
  3. 指定列表筛选;
  4. 数据透视表;
  5. np.where使用;
  6. df.take变换列的顺序;

你可能感兴趣的:(pandas)