首页 > 解决方案 > 如果计数少于使用python的预期,我如何计算并将数字添加到特定位置?

问题描述

我把这个脚本放在一起,我修改了表格中的电话号码以删除 (,) 之类的字符,并在数字的开头添加了国家代码 55。

我的问题是表中有一些数字在(右括号)之后缺少特定数字(数字 9),例如:原始表的索引 1 只有 10 位,索引 0 和 2 有 11。

我需要将右括号后的成员 9 添加到只有 10 位数字的数字中。

有任何想法吗?

import pandas as pd
import numpy as np
import glob
import os.path
import win32com.client as win32

#get header 3 and select columns


#C:\Users\wilso\OneDrive\Desktop\PastaBoletosRelatoro



folder_path = r'C:\PastaBoletosRelatorioVencendoHoje'
file_type = '\*xlsx'
files = glob.glob(folder_path + file_type)
max_file = max(files, key=os.path.getctime)

import_file = pd.read_excel(max_file)
#display (max_file)

data = pd.read_excel(max_file,  header=3, usecols=[0,6,7,8,9,10,11,12,13])

# empty variable
nan_value = float("NaN")
#
data.replace("", nan_value, inplace=True)
data.dropna(subset=["Nome"], inplace=True)
data.dropna(subset=["Placas"], inplace=True)
# reset data frame to index 0


data.reset_index(drop=True, inplace=True)

display(data)

# convert integer to string
dataNew = pd.DataFrame(data, columns=['Nome', 'Telefone Celular'])
dataNew['Nome'] = data['Nome'].str.split(" ").str[0].str.strip()
dataNew['Telefone Celular'] = data['Telefone Celular'].astype(str)
# add country code
dataNew['Telefone Celular'] = dataNew['Telefone Celular'].str.replace(r"\(", "55", regex=True)
# remove parentases
dataNew['Telefone Celular'] = dataNew['Telefone Celular'].str.replace(r"\)", "", regex=True)
# remove dashs from  telephone number
dataNew['Telefone Celular'] = dataNew['Telefone Celular'].str.replace("-", "", regex=True)

display(dataNew)

结果就是这个原始数据

名称 电话蜂窝
SOS 服务 (33)98817-4441
莫西尔·德·耶稣 (33)9927-4568
保罗·马科斯 (31)98816-4441

目前的结果

名称 电话蜂窝
求救 5533988174441
莫西尔 553399274568
保罗 5531988164441

预期结果 结果

名称 电话蜂窝
求救 5533988174441
莫西尔 5533999274568
保罗 5531988164441

标签: python-3.xpandas

解决方案


你可以用rjust. 这是一种用于用前导“值”填充列的方法,在您的情况下为 9。但首先您需要拆分电话号码并获取要填充的部分

  1. telehpone_number_serie = dataNew['Telefone Celular'].str.split(')').str[1]

然后填充,直到所有单元格的长度 = 10,值 = 9

  1. telehpone_number_serie.str.rjust(10, '9')

全部一起:

dataNew['Telefone Celular'].str.split(')').str[1].str.rjust(10, '9')

然后您可以在括号和 55 之间添加数字。

dataNew['FInal Telefone Celular'] = '55' + df.a.str.extract(r"\((\d+)\)")[0] + df.a.str.split(')').str[1].str.rjust(10, '9')

推荐阅读