pandas dataframe переназначить строку с 10-значным номером телефона - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть фрейм данных pandas, df_data, в котором есть столбец с именем «номер» с телефонными номерами различных форм.Например, номер телефона может быть в форме 234-567-8901, 2345678901 или даже (234) -567-8901.Я пытаюсь эффективно изменить каждую строку в этом столбце на телефонный номер только с номерами (например, 2345678901).Мой код делает это, однако, так как строк почти 1М, код выполняется вечно и даже не завершается в большинстве случаев.Есть лучший способ сделать это?В конце дня я заинтересован в получении столбца только с кодами городов.Некоторые значения в столбце не существуют и имеют значение nan.Любая помощь или руководство с благодарностью.

for i in range(np.shape(df_data)[0]):
    j = df_data.loc[i,'number']
    if(j==j):
        df_data.loc[i,'number']= re.findall("\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4}",j)

1 Ответ

0 голосов
/ 18 сентября 2018

Может быть, вы обдумываете это, но просто удалите все, что не является цифрой из этого столбца?

# Setup
df = pd.DataFrame({'number' : ['234-567-8901', '(234)-567-8901', '2345678901']})
print(df)
           number
0    234-567-8901
1  (234)-567-8901
2      2345678901

df['number'] = df.number.str.replace(r'\D+','')
print(df)
       number
0  2345678901
1  2345678901
2  2345678901
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...