Ошибка при итерации по фрейму данных pandas, созданному из столбца файла Excel - PullRequest
0 голосов
/ 24 октября 2018

Я читаю столбец файла excel в pandas dataframe.Вот код, который я написал для этого:

df = pd.ExcelFile('address.xlsx').parse('sheet1')  

x = df['Address']
print(x)

Вывод вышеуказанного кода:

0                         Via abc che - 66110 Chi
1                 Via vivo, 44\n65125 Paris (PR)
2                 Via vivo, 44\n65125 Pesc (PI)
3            Contrada contra\n64100 Term (PI)
4                    Via Mvico\n75025 Poli (PR)

В каждой строке есть только элемент, который является address.Теперь я хочу перебрать каждую строку этого dataframe, получить адрес и затем извлечь почтовый индекс из этого адреса.Я написал этот код для этого:

for index ,row in x:
    reg = re.compile('^.*(?P<zipcode>\d{5}).*$')
    match = reg.match(row[0])
    fitered_match = match.groupdict().zipcode  
    print(fitered_match)

При выполнении этого я получаю ошибку как ValueError: too many values to unpack (expected 2).

Я не могу понять:

  1. Почемуэта ошибка идет?
  2. Правильна ли моя логика для извлечения почтового индекса из адреса?

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете использовать extract():

df['Zip Code'] = df['Address'].str.extract(r'(\d{5})')

Выход:

                            Address Zip Code
0           Via abc che - 66110 Chi    66110
1    Via vivo, 44\n65125 Paris (PR)    65125
2     Via vivo, 44\n65125 Pesc (PI)    65125
3  Contrada contra\n64100 Term (PI)    64100
4        Via Mvico\n75025 Poli (PR)    75025

В исходном коде причина получения ошибки ValueError: too many values to unpack (expected 2) заключается в том, что вы этого не сделалииспользуйте enumerate(x), поскольку вы пытаетесь перебрать и индексы, и значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...