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个地方。如果字符串不满足此条件,则有前导零。
我有一个包含位置和邮政编码地址的 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个地方。如果字符串不满足此条件,则有前导零。