UPDATE tools, pers, sites
This commit is contained in:
parent
d554ac16ea
commit
991286e4df
@ -29,11 +29,41 @@ def get_auteur(nom=None, prenom=None):
|
||||
sql = sql,
|
||||
con = con,
|
||||
params = {'nom': to_tuple(nom), 'prenom': to_tuple(prenom) })
|
||||
df['nom_prenom'] = df.nom + ' ' + df.prenom
|
||||
df['nom_prenom'] = (df.nom + ' ' + df.prenom).str.strip()
|
||||
df.loc[df.nom_prenom.isna(), 'nom_prenom'] = df.loc[df.nom_prenom.isna(), 'nom']
|
||||
|
||||
return df
|
||||
|
||||
def get_auteur2(nom=None, prenom=None, organisme=None):
|
||||
# table = 'personne'
|
||||
# sql = 'SELECT * FROM %s.%s'%(schema,table)
|
||||
# if nom or prenom : sql = sql + ' WHERE '
|
||||
# if nom :
|
||||
# sql = sql + 'nom IN %(nom)s'
|
||||
# nom = to_upper(nom)
|
||||
# if nom and prenom : sql = sql + ' AND '
|
||||
# if prenom :
|
||||
# sql = sql + 'prenom IN %(prenom)s'
|
||||
# prenom = to_upperfirst(prenom)
|
||||
# df = read_sql(
|
||||
# sql = sql,
|
||||
# con = con,
|
||||
# params = {'nom': to_tuple(nom), 'prenom': to_tuple(prenom) })
|
||||
# df['nom_prenom'] = (df.nom + ' ' + df.prenom).str.strip()
|
||||
# df.loc[df.nom_prenom.isna(), 'nom_prenom'] = df.loc[df.nom_prenom.isna(), 'nom']
|
||||
df = get_auteur(nom=nom, prenom=prenom)
|
||||
org = get_organisme(nom=organisme).rename(columns={'nom':'organisme'})
|
||||
df = df.merge(org,how='left',left_on='id_organisme',right_index=True)
|
||||
|
||||
df['np_orga'] = ['%s (%s)'%(x.nom_prenom,x.organisme) for i,x in df.iterrows()]
|
||||
df['np_abbrev'] = ['%s (%s)'%(x.nom_prenom,x.abbrev) for i,x in df.iterrows()]
|
||||
df.loc[(df.organisme!='Inconnu')&(df.abbrev.isna()),['nom_prenom']] = df.loc[(df.organisme!='Inconnu')&(df.abbrev.isna()),'np_orga']
|
||||
df.loc[~df.abbrev.isna(),['nom_prenom']] = df.loc[~df.abbrev.isna(),'np_abbrev']
|
||||
df.drop(columns=[
|
||||
'np_orga','np_abbrev',*org.columns.drop('organisme'),'id_organisme'], inplace=True)
|
||||
df.set_index('id', inplace=True)
|
||||
return df
|
||||
|
||||
def get_organisme(ids=None, nom=None):
|
||||
table = 'organisme'
|
||||
df = _get_table(con, schema, table, ids=ids, nom=nom)
|
||||
@ -62,10 +92,39 @@ def _merge_orga(df, split_cols):
|
||||
return df
|
||||
|
||||
|
||||
def _merge_author2(df, col_aut):
|
||||
# récupération des auteurs
|
||||
aut = get_auteur2().fillna('')
|
||||
# aut['nom_prenom'] = (aut['nom'] + ' ' + aut['prenom']).str.strip()
|
||||
aut.reset_index(drop=False, inplace=True)
|
||||
aut['id'] = aut['id'].astype(str)
|
||||
id_inconnu = aut[aut.nom == 'INCONNU'].id[0]
|
||||
|
||||
# merge des auteurs
|
||||
df[col_aut].fillna(id_inconnu, inplace=True)
|
||||
df[col_aut] = df[col_aut].replace(['\.0'],'',regex=True)
|
||||
r_id = df[['id', col_aut]].copy()
|
||||
r_idSplit = r_id[col_aut].str.split(' & ', expand=True)
|
||||
r_id = r_id.join(r_idSplit)
|
||||
cSplit = r_idSplit.shape[1]
|
||||
cSplit = list(range(cSplit))
|
||||
|
||||
r_id[cSplit] = r_id[cSplit].replace(aut['id'].tolist(),aut['nom_prenom'].tolist())
|
||||
r_id = _aggr_cols(r_id,cSplit,' & ') \
|
||||
.rename(columns={'aggreg': 'auteur'}) \
|
||||
.drop(columns=cSplit)
|
||||
|
||||
df = merge(df,r_id,how='left', on=['id', col_aut], suffixes=[None,'_y']) \
|
||||
.drop(columns=[col_aut])
|
||||
|
||||
return df
|
||||
|
||||
|
||||
|
||||
def _merge_author(df, col_aut, orga=False, on_index=False):
|
||||
# récupération des auteurs
|
||||
aut = get_auteur().fillna('')
|
||||
aut['nom_prenom'] = (aut['nom'] + ' ' + aut['prenom']).str.strip()
|
||||
# aut['nom_prenom'] = (aut['nom'] + ' ' + aut['prenom']).str.strip()
|
||||
aut['id'] = aut['id'].astype(str)
|
||||
id_inconnu = aut[aut.nom == 'INCONNU'].id[0]
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
#Version : 1.0
|
||||
|
||||
from ..tools import _get_table
|
||||
from ..pers.pers import _get_table,_merge_author,_merge_relation
|
||||
from ..pers.pers import _merge_author,_merge_relation
|
||||
|
||||
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#Auteur : Colas Geier
|
||||
#Version : 1.0
|
||||
|
||||
from numpy.core.numeric import True_
|
||||
from pandas import Series, Index, read_sql, merge
|
||||
|
||||
|
||||
@ -119,8 +120,13 @@ def _set_geom(df, hex=True):
|
||||
import geopandas as gpd # set_geometry
|
||||
|
||||
if hex:
|
||||
df['geom'] = [(loads(geom, hex=True)) for geom in df['geom']]
|
||||
df = df.set_geometry('geom', crs='EPSG:2154')
|
||||
# df['geometry'] = [(loads(geom, hex=hex)) for geom in df['geom']]
|
||||
geometry = [(loads(geom, hex=hex)) for geom in df['geom']]
|
||||
df.drop(columns=['geom'], inplace=True)
|
||||
df = gpd.GeoDataFrame(df,geometry=geometry,crs='EPSG:2154')
|
||||
df.rename_geometry('geom', inplace=True)
|
||||
else:
|
||||
df = df.set_geometry('geom', crs='EPSG:2154')
|
||||
|
||||
return df
|
||||
|
||||
@ -237,6 +243,23 @@ def _get_relation_autor(df, relation_tab, schema, id_df, id_relation, id_rela_au
|
||||
|
||||
|
||||
|
||||
def _get_relation_autor2(df, relation_tab, schema, id_df, id_relation, id_rela_auth='id_auteur'):
|
||||
from .pers.pers import _merge_relation, get_auteur2
|
||||
if 'site' in relation_tab:
|
||||
suffixe = relation_tab.split('_')[1].split('site')[1]
|
||||
suffixe = '_' + suffixe
|
||||
df = _merge_relation(df=df,table=relation_tab,schema=schema,
|
||||
left_id = id_df,
|
||||
right_id = id_relation)
|
||||
|
||||
aut = get_auteur2()[['nom_prenom']]
|
||||
df[id_rela_auth] = df[id_rela_auth].astype(float)
|
||||
df = df.merge(aut,how='left', left_on=id_rela_auth, right_index=True)
|
||||
# df = _merge_author(df=df, col_aut=id_rela_auth, on_index=True)
|
||||
df.rename(columns={'auteur': 'auteur'+suffixe}, inplace=True)
|
||||
return df
|
||||
|
||||
|
||||
def to_geoms(geometries):
|
||||
from shapely.geometry import Polygon,LineString
|
||||
for geometry in geometries:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user