我正在将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)
。
我无法理解:
答案 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)
。