Pandas 数据框搜索和修改邮政编码前导零

Pandas dataframe search and modify leading zero on postal codes

我有一个包含位置和邮政编码地址的 pandas DataFrame 数据库。但是邮政编码是根据 Excel 阅读解释的。例如,在法国,邮政地址是部门代码后跟城市代码,例如75600 (75 = 'Paris region', 600 = 'inner city').

但在某些首位邮政编码中,例如01200 它被解释为 1200。如何搜索低于 10000 的整数值并修改它们?或者如何保留第一个零。如何在数据框中搜索和替换并使用内容(修改它)?

我建议创建一个新列,而不是尝试即时替换。

像这样...

例如,

In [42]: df=pd.DataFrame([{"Location": "some_loc", "Code": "75600"}, {"Location": "some_other_loc", "Code": "01200"}, {"Location": "another_loc", "Code": "08100"}])

In [43]: df
Out[43]:
         Location   Code
0        some_loc  75600
1  some_other_loc  01200
2     another_loc  08100

In [46]: df["NewCode"] = [str(int(x)) if int(x) < 10000 else None for x in df["Code"]]

In [47]: df
Out[47]:
         Location   Code NewCode
0        some_loc  75600    None
1  some_other_loc  01200    1200
2     another_loc  08100    8100

因此,据我了解,一种可能的解决方案是在邮政编码 < 10000 时保留第一个 0。是这样吗?一种方法是将所有条目转换为字符串。

import pandas as pd
# example with only two locations in column 0 of a DataFrame 
df = pd.DataFrame([75600, 1200])
# convert all entries in column 0 to string, adding '0' to the beginning when postal code < 10000
df = df[0].apply(lambda x: '0' + str(x) if x < 10000 else str(x))

如果这不是您想要的解决方案,请告诉我。

df = df[0].apply(lambda x: '0' + str(x) if x < 10000 else str(x)) 的解决方案是完美的。它将代码转换为完整的字符串,然后我可以找到与国家邮政信息相对应的 GPS 坐标。 非常感谢。

该问题的另一种解决方案是使用 Pandas 提供给字符串的内置 zfill 选项。

df[0] = df[0].apply(lambda x : str(x).zfill(5))

这里的zfill加上参数5是说字符串至少要有5个地方。如果字符串不满足此条件,则有前导零。