在熊猫中,如何将符号转换为整数?

时间:2020-06-02 12:03:58

标签: python pandas integer scientific-notation

在python3和熊猫中,我打开这样的CSV:

import pandas as pd
kwargs = {'sep': ';', 'dtype': str, 'encoding': 'utf-8'}
df = pd.read_csv("COVID_sp_29_mai_2020.csv", **kwargs)

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7119 entries, 0 to 7118
Data columns (total 27 columns):
 #   Column                          Non-Null Count  Dtype 
---  ------                          --------------  ----- 
 0   Secretaria                      7119 non-null   object
 1   Assunto                         7119 non-null   object
 2   13979                           7119 non-null   object
 3   Valor de Empenho no Processo    7119 non-null   object
 4   Órgão                           7119 non-null   object
 5   Código UG Documento             7119 non-null   object
 6   Descrição Processo              7119 non-null   object
 7   Finalidade                      7119 non-null   object
 8   R$ Empenho                      7119 non-null   object
 9   Tipo Documento                  7119 non-null   object
 10  Data Atualização                7119 non-null   object
 11  R$ Pago                         7119 non-null   object
 12  Número Empenho                  7119 non-null   object
 13  Número Documento NE Ref / Anul  335 non-null    object
 14  Número Processo                 7119 non-null   object
 15  CGC CPF                         7026 non-null   object
 16  Nome Credor                     7119 non-null   object
 17  Data Emissão                    7119 non-null   object
 18  Ação Orçamentária               7119 non-null   object
 19  Fonte                           7119 non-null   object
 20  Código Fonte                    7119 non-null   object
 21  Descrição                       7119 non-null   object
 22  Unnamed: 22                     0 non-null      object
 23  Unnamed: 23                     0 non-null      object
 24  Unnamed: 24                     0 non-null      object
 25  Unnamed: 25                     16 non-null     object
 26  Unnamed: 26                     17 non-null     object
dtypes: object(27)
memory usage: 1.5+ MB

该列的“ CGC CPF”具有识别码,有时只能包含数字或数字和字母

标识代码“ CGC CPF”仅带有行的行表示该文件。示例:

Educação;Merenda em Casa;regular;81.508.955,00 ;SECRETARIA DA EDUCACAO;80358;MERENDA EM CASA;MERENDA EM CASA;-40280955;NE;29/05/2020;0;2020NE00119;2020NE00120;20407/20;2,29E+13;PICPAY SERVICOS S/A;01/04/2020;FORNEC. ALIMENTACAO P/ALUNOS EDUCACAO BASICA;Federal;5003002;DISPENSA DE LICITACAO;;;;Data Atualização;Data Atualização

在这种情况下,此行的代码在CSV中为“ 2,29E + 13”。这是公司代码,我知道是“ 22896431000110”

请,我如何将列表示法转换为整数?

我想将指数表示法值转换为int。并以此检查CSV值是否正确

1 个答案:

答案 0 :(得分:1)

尝试一下-

df['CGC CPF'].fillna('UNK', inplace=True)
df.loc[:, 'CGC CPF'] = df.loc[:, 'CGC CPF'].str.replace(',','') #replacing ',' in target column with blank, for us to interpret exponential values
match = ['E+','e+'] #Since there are both e+ and E+ notation
df['CGC CPF'] = df['CGC CPF'].apply(lambda x: float(x) if any(m in x for m in match) else x)  #using float to convert exponential to a number