迭代从Excel文件列创建的熊猫数据框时出错

时间:2018-10-24 20:16:43

标签: python excel pandas

我正在将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 :(得分:1)

您可以使用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)