首页 > 其他分享 >农经权中如何利用地块信息表、家庭成员表、合同面积表生成公示表

农经权中如何利用地块信息表、家庭成员表、合同面积表生成公示表

时间:2024-11-08 23:18:40浏览次数:3  
标签:kc 地块 权中 t2 家庭成员 list cbfbm t1 农经

农经权确权过程中要收集很多信息,最重要的信息为每户有多少块地,这户又有多少人来着。在村里公示的时候,不仅要有图纸公示位置,而且要有对应的表格看公示信息。然而存在一个问题,一户的地块数跟家庭成员数量不会有对应关系,用excel表格处理,没法做到将地块表与家庭成员表结合到一块。于是就需要一个python程序来解决这问题。

1、问题展示

家庭成员表,记录家庭成员个数:户号18家庭5人,户号19家庭4人。

 地块信息表,记录每户地块数量与面积:户号18家庭7块地,户号19家庭2块地。

两张表要合并,每户需要的行数是取家庭成员数量与地块数量二者的大值,用excel操作,往往是将一张表合并到另外一张表,那就需要其中一张表增加行数,切用VLOOKUP命令也不好使。形成的公示表:18号户需7行,19号户需4行。

2、解决问题

通过Python来解决上面的问题。分三步骤:1、计算每户的家庭成员数与地块数,取其大值作为每户公示表(目标表)需要的行数(备用);2、将每户家庭成员表、地块表增加到与公示表数量一致;3、合并家庭成员表与地块数表。

3、代码实例

由于这里面地块的面积来自第三张表,这里就一并处理将三张表进行合并。为了让大家理解代码,将三张表:t1sl.xlsx、t2jtcyb.xlsx、t3htmj.xlsx,截图展示。

t1sl.xlsx

t2jtcyb.xlsx

t3htmj.xlsx

下面为代码实例:

'''
公示表出表,共计有三个原始表,用这三个原始表将公示表输出;
表1,矢量表需要字段:承办方编码CBFBM、实测面积、地块名称、地块编码、东至、西至、南至、北至
表2,家庭成员表需要字段:承办方编码、承包方姓名、性别、与户主关系、身份证号
表3,地块信息表需要字段:地块编码、合同面积
输出表格包括:序号、承包方代表姓名缩略码、总数、姓名、性别、与户主关系、身份证号、合同面积、实测面积、地块名称、地块编码、东至、南至、西至、北至、地块类别、
取得承包方式、土地用途、合同面积,实测面积
'''

import pandas as pd

a=pd.read_excel('t1sl.xlsx')
b=pd.read_excel('t2jtcyb.xlsx')
c=pd.read_excel('t3htmj.xlsx')

t1_cbfbm=a['CBFBM'].values.tolist()#承包方编码
t1_dkbm=a['DKBM'].values.tolist()#地块编码
dkmc=a['DKMC'].values.tolist()#地块名称
dkdz=a['DKDZ'].values.tolist()#地块东至
dkxz=a['DKXZ'].values.tolist()#地块西至
dknz=a['DKNZ'].values.tolist()#地块南至
dkbz=a['DKBZ'].values.tolist()#地块北至
scmj=a['SCMJM'].values.tolist()#地块实测面积

t2_cbfbm=b['承包方编码'].values.tolist()#承包方编码
t2_name = b['成员姓名'].values.tolist()#成员姓名
xb=b['性别'].values.tolist()#成员性别
yhzgx=b['与户主关系'].values.tolist()#与户主关系
zjh=b['成员证件号码'].values.tolist()#承包方编码

t3_dkbm=c['DKBM'].values.tolist()#地块编码
htmj=c['YHTMJM'].values.tolist()#地块实测面积
# 地块编码对应的合同面积建立字典
htmj_dict={}
for i in range(len(t3_dkbm)):
    htmj_dict[t3_dkbm[i]]=htmj[i]

# 先统计出每个承包方编码有多少个地块、多少个家庭成员
num_dk={}
num_jtcy={}
cbfbm_list=list(set(t1_cbfbm))
# 升序排列
cbfbm_list.sort()
# 计算出总的行数
# trow=0
# 每个承包方编码需要的行数,
bianma_row={}
for i in range(len(cbfbm_list)):
    k1=t1_cbfbm.count(cbfbm_list[i])
    k2=t2_cbfbm.count(cbfbm_list[i])
    num_dk[cbfbm_list[i]]= k1
    num_jtcy[cbfbm_list[i]] = k2
    if k1>k2:
        bianma_row[cbfbm_list[i]]=k1
    else:
        bianma_row[cbfbm_list[i]]=k2
# 将表1中元素扩充
t1_cbfbm_kc=[]
t1_dkbm_kc=[]
dkmc_kc=[]
dkdz_kc=[]
dkxz_kc=[]
dknz_kc=[]
dkbz_kc=[]
scmj_kc=[]
htmj_kc=[]
for i in range(len(t1_cbfbm)-1):
    m1=t1_cbfbm[i]
    m2=t1_cbfbm[i+1]

    t1_cbfbm_kc.append(t1_cbfbm[i])
    t1_dkbm_kc.append(t1_dkbm[i])
    dkmc_kc.append(dkmc[i])
    dkdz_kc.append(dkdz[i])
    dkxz_kc.append(dkxz[i])
    dknz_kc.append(dknz[i])
    dkbz_kc.append(dkbz[i])
    scmj_kc.append(scmj[i])
    try:
        htmj_kc.append(htmj_dict[t1_dkbm[i]])
    except:
        htmj_kc.append(scmj[i])
    if m1!=m2:
        if num_dk[m1]<num_jtcy[m1]:
            n=num_jtcy[m1]-num_dk[m1]
            n1=[]
            n2=[]
            n3=[]
            for j in range(n):
                n1.append(m1)
                n2.append('')
                n3.append(0)
            t1_cbfbm_kc=t1_cbfbm_kc+n1
            t1_dkbm_kc=t1_dkbm_kc+n2
            dkmc_kc=dkmc_kc+n2
            dkdz_kc=dkdz_kc+n2
            dkxz_kc=dkxz_kc+n2
            dknz_kc=dknz_kc+n2
            dkbz_kc=dkbz_kc+n2
            scmj_kc=scmj_kc+n3
            htmj_kc=htmj_kc+n3
t1_cbfbm_kc=t1_cbfbm_kc+[t1_cbfbm[-1]]
t1_dkbm_kc=t1_dkbm_kc+[t1_dkbm[-1]]
dkmc_kc=dkmc_kc+[dkmc[-1]]
dkdz_kc=dkdz_kc+[dkdz[-1]]
dkxz_kc=dkxz_kc+[dkxz[-1]]
dknz_kc=dknz_kc+[dknz[-1]]
dkbz_kc=dkbz_kc+[dkbz[-1]]
scmj_kc=scmj_kc+[scmj[-1]]
htmj_kc=htmj_kc+[scmj[-1]]

# 将表2中元素扩充
t2_cbfbm_kc=[]
t2_name_kc=[]
xb_kc=[]
yhzgx_kc=[]
zjh_kc=[]
for i in range(len(t2_cbfbm)-1):
    m1=t2_cbfbm[i]
    m2=t2_cbfbm[i+1]
    t2_cbfbm_kc.append(t2_cbfbm[i])
    t2_name_kc.append(t2_name[i])
    xb_kc.append(xb[i])
    yhzgx_kc.append(yhzgx[i])
    zjh_kc.append(zjh[i])
    if m1!=m2:
        if num_dk[m1]>num_jtcy[m1]:
            n=num_dk[m1]-num_jtcy[m1]
            n1=[]
            n2=[]
            for j in range(n):
                n1.append(m1)
                n2.append('')
            t2_cbfbm_kc=t2_cbfbm_kc+n1
            t2_name_kc=t2_name_kc+n2
            xb_kc=xb_kc+n2
            yhzgx_kc=yhzgx_kc+n2
            zjh_kc=zjh_kc+n2
n=num_dk[t2_cbfbm[-1]]
n1=[]
n2=[]
n3=[]
for i in range(n):
    n1.append(t2_cbfbm[-1])
    n2.append('村集体')
    n3.append('')
t2_cbfbm_kc=t2_cbfbm_kc+n1
t2_name_kc=t2_name_kc+n2
xb_kc=xb_kc+n3
yhzgx_kc=yhzgx_kc+n3
zjh_kc=zjh_kc+n3

# 地块的合同面积与实测面积求和
qh=['编码','面积1','面积2']
qh_list=[]
for i in range(len(t2_cbfbm_kc)):
    qh_list.append([t1_cbfbm_kc[i],htmj_kc[i],scmj_kc[i]])
qhdf=pd.DataFrame(qh_list,columns=qh)
mj1=qhdf.groupby('编码')['面积1'].sum()
mj2=qhdf.groupby('编码')['面积2'].sum()

mj1_dict={}
mj2_dict={}
for i in range(len(cbfbm_list)):
    mm1=mj1.values.tolist()
    mm2=mj2.values.tolist()
    mj1_dict[cbfbm_list[i]]=mm1[i]
    mj2_dict[cbfbm_list[i]]=mm2[i]

tiltle_table=['xh','xmslm','zs','xm','xb','yhzgx','sfzh','zhtmj','zscmj','dkmc','dkbm','dz','nz','xz','bz','dklb','cbfs','tdyt','htmj','scmj']
name_list = []
for i in range(0,len(t1_cbfbm_kc)):
    zs=str(num_jtcy[t2_cbfbm_kc[i]])+'人'
    if t2_name_kc[i]!='':
        xmslm=t2_name_kc[i]+str(t1_cbfbm_kc[i])[-5:]
    else:
        xmslm=''
    zhtmj='合计:'+str(num_dk[t1_cbfbm_kc[i]])+'块' +str(round(mj1_dict[t1_cbfbm_kc[i]],2))+'亩'
    zscmj = '合计:' + str(num_dk[t1_cbfbm_kc[i]])+'块' + str(round(mj2_dict[t1_cbfbm_kc[i]],2)) + '亩'
    if scmj_kc[i]==0:
        dklb=''
        cbfs=''
        tdyt=''
        htmj_t=''
        scmj_t=''
    else:
        dklb='承包地块'
        cbfs='家庭承包'
        tdyt='种植业'
        htmj_t=str(htmj_kc[i])
        scmj_t=str(scmj_kc[i])
    # print(str(t1_cbfbm_kc[i])[-3:])
    name_list.append([str(t1_cbfbm_kc[i])[-3:],xmslm,zs,t2_name_kc[i],xb_kc[i],yhzgx_kc[i],str(zjh_kc[i]),zhtmj,zscmj,dkmc_kc[i],
                      str(t1_dkbm_kc[i]),dkdz_kc[i],dknz_kc[i],dkxz_kc[i],dkbz_kc[i],
                      dklb,cbfs,tdyt,htmj_t,scmj_t])
df = pd.DataFrame(name_list, columns=tiltle_table)
df.to_excel('gsbsc.xlsx', index=False)

标签:kc,地块,权中,t2,家庭成员,list,cbfbm,t1,农经
From: https://blog.csdn.net/weixin_47364423/article/details/143635962

相关文章

  • 高可用!一个基于 SpingBoot + Oauth2 的单点认证授权中心!
    大家好,我是Java陈序员。现代企业中,往往包含多个系统,如果每个系统都需要登录注册,这样的用户体验很不好!这时,就需要设计一个单点登录系统,一次登录处处登录,一次退出处处退出!今天,给大家介绍一个基于SpingBoot+Oauth2的单点认证授权中心,支持分布式高可用!关注微信公众号:【Java......
  • 向版权中心提交代码PDF文件时总是无法上传成功,怎么回事?
    在实际的补正提交的操作中遇到了该问题一开始找不到原因上传了十多遍都不行都是传完之后一闪而过显示红色叉号后来发现初次提交的代码pdf却可以正常上传推测是pdf本身格式差异,不符合系统提交要求本次提交的pdf是用wps的“输出为pdf”功能导出的才想到以前也遇到过wps输出......
  • NET6 自定义授权中间件
    AuthorizationWithCustMiddleware///<summary>///自定义授权中间件类:使用身份验证中间件存储的身份信息来进行权限验证///一定要先启用身份验证中间件(app.UseAuthentication()),它会验证请求中的身份信息,并将身份信息存储在HttpContext.User属性中///如果没有启用身份......
  • 初中英语优秀范文100篇-017A Special Farmily Member-一位特殊的家庭成员
    PDF格式公众号回复关键字:SHCZFW017记忆树1Ben,acutedog,isaspecialmemberinmyfamily.翻译本,一只可爱的狗狗,是我家的特别成员。简化记忆狗狗句子结构这个句子的结构可以进行详细分析如下:主语:Ben,acutedog(Ben,一只可爱的狗)谓语动词:is(是)宾语:aspecial......
  • ASP.NET Core 授权中间件 AuthorizationMiddleware
    ///<summary>///Amiddlewarethatenablesauthorizationcapabilities.///</summary>publicclassAuthorizationMiddleware{//AppContextswitchusedtocontrolwhetherHttpContextorendpointispassedasaresourcetoAuthZ......
  • 残疾人“单人保”,发放低保不再审查其他家庭成员的收入情况
    专注残疾人就业相关问题,解答残疾人就业疑惑,+关注了解更多内容残疾人“单人保”,终于定了民政部和财政部发了文件导语据民政部社会救助司副司长蒋玮介绍,《关于进一步做好困难......
  • Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式
    一、前言上一篇我分享了一篇关于Asp.NetCore中IdentityServer4授权中心之应用实战的文章,其中有不少博友给我提了问题,其中有一个博友问我的一个场景,我给他解答的还不......
  • Asp.Net Core 中IdentityServer4 授权中心之应用实战
    一、前言查阅了大多数相关资料,查阅到的IdentityServer4的相关文章大多是比较简单并且多是翻译官网的文档编写的,我这里在Asp.NetCore中IdentityServer4的应用分析中会......
  • PbootCMS授权中文域名方法
    通过PbootCMS搭建的网站域名都需要免费获取授权码才可以打开,如果域名中含有中文,那就会提示“域名格式有误”,这是为什么呢?如下图: 解决方法: 1、先给中文域名转码,中文......
  • [???] 带权中位数
    好像是某道CF问题的变形,记一下.题目描述有若干的排列在一条直线上的点\(p_i\),每个点上有\(a_i\)个人,找出一个点,使得所有人移动带这个人的位置上的总距离最小.结......