在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值是否正确
答案 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