我需要比较两个数据帧中的代码。我正在使用python3和pandas
在第一个基中,代码总是有18位数字:
dividas_dep = pd.read_csv("dividas_deputados_ajustado_csv.csv",sep=';',encoding = 'latin_1')
dividas_dep.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 106 entries, 0 to 105
Data columns (total 10 columns):
CPF_Deputado 106 non-null object
CPF_limpo 106 non-null int64
Nome_Deputado 106 non-null object
Vinculo 106 non-null object
CNPJ_Devedor 106 non-null object
CNPJ_limpo 106 non-null int64
Nome_Devedor 106 non-null object
Valores_situacao_Irregular 65 non-null object
Valores_situacao_Regular 52 non-null object
Total_Devido 106 non-null object
dtypes: int64(2), object(8)
memory usage: 8.4+ KB
第一个基数中的比较列(“CNPJ_Devedor”)有以下示例:17.080.201/0001-49、76.205.723/0001-99、04.885.828/0001-25
在第二个基数中,代码总是有10位数:
funrural = pd.read_excel('DEVEDORES FUNRURAL ATUALIZADO PGFN.xlsx')
funrural.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8130 entries, 0 to 8129
Data columns (total 14 columns):
PSFN_PGFN 8129 non-null object
Regiao 8129 non-null object
CNPJ_CEI_Tipo 8129 non-null object
CNPJ_Raiz 8129 non-null object
Razao_Social 8130 non-null object
Valor_principal 8130 non-null float64
Valor_TR_IPC_Poup 8130 non-null float64
Valor_Juros 8130 non-null float64
Valor_SELIC 8130 non-null float64
Valor_Encargo 8130 non-null float64
Valor_Multa_Oficio 8130 non-null float64
Valor_Selic_M_Oficio 8130 non-null float64
Vl_Multa_Mora 8130 non-null float64
Vl_Tot_Credito 8130 non-null float64
dtypes: float64(9), object(5)
memory usage: 889.3+ KB
在第二个基数(“CNPJ_Raiz”)中比较的列有以下示例:04.244.173、05.006.407、03.632.132
“CNPJïu Devedor”和“CNPJïu Raiz”这两个代码在税收立法中是相关的,但我不能这样简单地合并:
compara1 = pd.merge(dividas_dep, funrural, left_on='CNPJ_Devedor', right_on='CNPJ_Raiz')
我需要做的是只比较“CNPJ\u Devedor”的前10位数字和代码“CNPJ\u Raiz”(例如,在“17.080.201/0001-49”中仅使用“17.080.201”)
在Python中有什么方法可以做到这一点吗?或者我应该编辑原始数据帧文件dividas\u dep(dividas\u deputados\u ajustado\u csv.csv)来创建一个只有前10位的新列吗
您可以将前10个字符串元素的片段与
.str.slice(None, 10)
进行比较:示例:
您可以使用结果创建新的数据帧:
相关问题 更多 >
编程相关推荐