尝试修改这句标题。
尝试修改这段内容。
先上一个execl表,看下内容格式
笨方法就是一点一点的弄,那太傻逼了
import pandas as pd
#显示所有列
pd.set_option('display.max_columns', None)
filename = f"D:111.xls"
df=pd.read_excel(filename)
#根据第一列的账期来进行筛选
'''
df1=df[df['账期'].isin(['202001'])]
df2=df[df['账期'].isin(['202002'])]
df3=df[df['账期'].isin(['202003'])]
df4=df[df['账期'].isin(['202004'])]
df5=df[df['账期'].isin(['202005'])]
df6=df[df['账期'].isin(['202006'])]
pd1 = pd.pivot_table(df1,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
pd1 = pd1.rename(columns={'净出账':'1月净出账','出账用户数':'1月出账用户数','当月发展量':'1月当月发展量'})
pd2 = pd.pivot_table(df2,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
pd2 = pd2.rename(columns={'净出账':'2月净出账','出账用户数':'2月出账用户数','当月发展量':'2月当月发展量'})
pd3 = pd.pivot_table(df3,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
pd3 = pd3.rename(columns={'净出账':'3月净出账','出账用户数':'3月出账用户数','当月发展量':'3月当月发展量'})
pd4 = pd.pivot_table(df4,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
pd4 = pd4.rename(columns={'净出账':'4月净出账','出账用户数':'4月出账用户数','当月发展量':'4月当月发展量'})
pd5 = pd.pivot_table(df5,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
pd5 = pd5.rename(columns={'净出账':'5月净出账','出账用户数':'5月出账用户数','当月发展量':'5月当月发展量'})
pd6 = pd.pivot_table(df6,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
pd6 = pd6.rename(columns={'净出账':'6月净出账','出账用户数':'6月出账用户数','当月发展量':'6月当月发展量'})
#cols1 = pd1.columns[[0,1,2]]
#cols2 = pd1.columns[[0,1,3]]
#cols3 = pd1.columns[[0,1,4]]
pdd1 = pd1.drop(columns = ['1月出账用户数','1月当月发展量'])
pdd2 = pd1.drop(columns = ['1月净出账','1月当月发展量'])
pdd3 = pd1.drop(columns = ['1月净出账','1月出账用户数'])
pdd1['2月净出账'] = pd2['2月净出账']
pdd1['3月净出账'] = pd3['3月净出账']
pdd1['4月净出账'] = pd4['4月净出账']
pdd1['5月净出账'] = pd5['5月净出账']
pdd1['6月净出账'] = pd6['6月净出账']
#这就生成净出账汇总表,然后再进行下一步。但是这样如果到年底或者要用好几年的数,不得不更加麻烦了,想用个其他的方法实现,
大佬可有好的方法。
我现在的思路是,读取第一列写入列表,再做循环,但是卡住了,大家看代码
def excel_one_line_to_list(filename):
df = pd.read_excel(filename, usecols=[0],names=None) # 读取项目名称列,不要列名
df = df.drop_duplicates()
df_li = df.values.tolist()
result = []
for s_li in df_li:
result.append(s_li[0])
return result
#这个函数是读取第一列写入列表,删除重复值
datelist = excel_one_line_to_list(filename)
datelist = [i for i in datelist if i != ' ']
print(datelist)
st = pd.DataFrame()
#这个是删除列表中的其他元素不用管,下面循环出问题
for date in datelist:
st=df[df['账期'].isin([date])]
st = pd.pivot_table(st,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
st = st.rename(columns={'净出账':date+'净出账','出账用户数':date+'出账用户数','当月发展量':date+'当月发展量'})
print(st)
st 就是每个账期的数据透视表,下面就是如何汇总到一起,不会了,拼不上,难道分别写入excel的sheet,再读出来处理吗?
这样是不是多此一举。是用merge还是concat?每个月的划小单元的数量不固定,这个是有调整的
感谢大佬提点建议,长期思考,后面还要再上一个表的基础上再汇总求和插入,还不会啊