我正在尝试运行一个脚本,该脚本评估可能的客户属性会导致向每个客户收取的利率。
我遇到了麻烦: cf_op = pd.merge(left = cf_op,right = datos_compra,how ='left',left_index = True,right_index = True).fillna(0)
合并无法正常进行。在nan的结果中,除01/21/2020和02/20/2020中的668691外,每天应为0。
import numpy as np
import pandas as pd
import datetime
import pygsheets
#input de vendedor
gc = pygsheets.authorize(service_file='/Users/diegokenny/Documents/Python scripts/Cash Flow dCaC-454d56c8c130.json')
sh1 = gc.open('Cotizador Versión INVERNADA')
wks = sh1[2]
datos_vendedor1 = wks.get_as_df(has_header = False, numerize=False, value_render= 'UNFORMATTED_VALUE', include_tailing_empty=False, include_tailing_empty_rows = False, start = 'B11', end='E11')
datos_vendedor2 = wks.get_as_df(has_header = False, numerize=False, value_render= 'UNFORMATTED_VALUE', include_tailing_empty=False, include_tailing_empty_rows = False, start = 'B12', end='E12')
datos_vendedor = pd.concat([datos_vendedor1, datos_vendedor2], axis=1, join='outer')
importe_vendedor = wks.get_as_df(has_header = False, numerize=False, value_render= 'UNFORMATTED_VALUE', include_tailing_empty=False, include_tailing_empty_rows = False, start = 'B10', end='B10') * 1.105
datos_vendedor = pd.concat([importe_vendedor, datos_vendedor], axis=1, join='outer')
datos_vendedor.columns = ['importe_vendedor',
'plazo_v1',
'plazo_v2',
'plazo_v3',
'plazo_v4',
'plazo_v1_p',
'plazo_v2_p',
'plazo_v3_p',
'plazo_v4_p']
datos_vendedor['fecha_probable_carga'] = datetime.date.today()
datos_vendedor['fecha_probable_carga'] = pd.to_datetime(datos_vendedor['fecha_probable_carga'], format = '%Y/%m/%d')
datos_vendedor['plazo_v1'] = pd.to_timedelta(datos_vendedor['plazo_v1'],unit='D')
#input de comprador
sh1 = gc.open('Cotizador Versión INVERNADA')
wks = sh1[4]
datos_comprador = wks.get_as_df(has_header = True, numerize=False, value_render= 'UNFORMATTED_VALUE', include_tailing_empty=False, include_tailing_empty_rows = False, start = 'D1', end='K367')
datos_comprador.columns = ['plazo_c1','plazo_c2','plazo_c3','plazo_c4','plazo_c1_p','plazo_c2_p','plazo_c3_p','plazo_c4_p']
datos_comprador = datos_comprador.drop(datos_comprador[datos_comprador.plazo_c1 == '#N/A (Did not find value '' in VLOOKUP evaluation.)'].index)
datos_comprador['plazo_c1'] = pd.to_timedelta(datos_comprador['plazo_c1'],unit='D')
datos_comprador['fecha_probable_carga'] = datetime.date.today()
datos_comprador['fecha_probable_carga'] = pd.to_datetime(datos_comprador['fecha_probable_carga'], format = '%Y/%m/%d')
# armo tabla de saldos por día por cada operación
datos_comprador['importe_vendedor'] = datos_vendedor['importe_vendedor'][0]
datos_vendedor['fecha_pago_1'] = datos_vendedor['fecha_probable_carga'] + datos_vendedor['plazo_v1']
datos_vendedor['monto_pago_1'] = datos_vendedor['importe_vendedor'] * datos_vendedor['plazo_v1_p'] / 100
datos_comprador['fecha_cobro_1'] = datos_comprador['fecha_probable_carga'] + datos_comprador['plazo_c1']
datos_comprador['monto_cobro_1'] = datos_comprador['importe_vendedor'] * datos_comprador['plazo_c1_p'] / 100
datos_vendedor_fechas = datos_vendedor.loc[:,['fecha_pago_1']]
datos_vendedor_montos = datos_vendedor.loc[:,['monto_pago_1']]
datos_vendedor_fechas = datos_vendedor_fechas.transpose().reset_index()
datos_vendedor_montos = datos_vendedor_montos.transpose().reset_index()
datos_venta = pd.concat([datos_vendedor_fechas, datos_vendedor_montos], axis=1, sort=False)
datos_venta.columns = ['index1', 'fecha_pago', 'index2', 'monto_pago']
datos_venta = datos_venta.drop(['index1','index2'], axis=1)
datos_venta = datos_venta.set_index('fecha_pago')
datos_venta = datos_venta.groupby(level=0).sum()
cf_op = np.arange(datetime.date.today(), 120, 1)
cf_op = pd.DataFrame(index=cf_op)
cf_op = cf_op.merge(datos_venta, how='left', left_index=True, right_index=True).fillna(0)
# importo el cashflow del día
sh = gc.open('DB Finanzas')
wks = sh[0]
cashflow = wks.get_as_df(has_header = True, include_tailing_empty=False, include_tailing_empty_rows = False, numerize=True, value_render= 'UNFORMATTED_VALUE')
cashflow['Date'] = cashflow['Date'] - 25569
cashflow['Date'] = pd.to_timedelta(cashflow['Date'],unit='D')
aux = pd.to_datetime(1970/1/1, format = '%Y-%m-%d').replace(second=0, microsecond=0, nanosecond=0)
cashflow['Date'] = aux + cashflow['Date']
cashflow = cashflow.set_index('Date')
today = pd.to_datetime(datetime.date.today(), format = '%Y-%m-%d').replace(second=0, microsecond=0, nanosecond=0)
cashflow = cashflow.loc[[today]].transpose()
cashflow = cashflow.set_index(np.arange(datetime.date.today(), 120, 1))
cashflow.columns = ['old']
for row in datos_comprador.itertuples():
row = pd.DataFrame(data=row).T
row = row.iloc[:,1:]
row.columns = datos_comprador.columns
datos_comprador_fechas = row.loc[:,['fecha_cobro_1']].transpose().reset_index()
datos_comprador_montos = row.loc[:,['monto_cobro_1']].transpose().reset_index()
datos_compra = pd.concat([datos_comprador_fechas, datos_comprador_montos], axis=1, sort=False)
datos_compra.columns = ['index1', 'fecha_cobro', 'index2', 'monto_cobro']
datos_compra = datos_compra.drop(['index1','index2'], axis=1).set_index('fecha_cobro').groupby(level=0).sum()
cf_op = pd.merge(left= cf_op, right= datos_compra, how='left', left_index=True, right_index=True).fillna(0)