在Python中,在邮政编码的第3和第4个字符之间放置空格

2024-09-30 10:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python中的df(数据帧),带有一个带有加拿大邮政编码的邮政编码变量。所有邮政编码都收集在一行中,如k1b6j2。但是,要使用“pgeocode”软件包,我需要标准格式的邮政编码,如k1b 6j2(第3和第4个字符之间必须有空格)

那么,有没有办法用df中修改过的邮政编码替换所有邮政编码

非常感谢,, 本


Tags: 数据df标准格式邮政编码空格办法个字符
3条回答

在熊猫中,您可以使用“应用”来满足您的需求

df['postal_code'] = df['postal_code'].apply(lambda x:x[:3]+' '+x[-3:])

您只需按照预期的格式重新定义列:

import pandas as pd 
df = pd.DataFrame({'ID':[1,2,3,4],'postal_code':['k1b6j2','k1b6j3','k1b6j4','k1b6j5']}) ##Example dataset

   ID postal_code
0   1      k1b6j2
1   2      k1b6j3
2   3      k1b6j4
3   4      k1b6j5

按所需格式重新定义postal_code列:

df['postal_code'] = df['postal_code'].astype(str)
df['postal_code'] = [(x[:3]+" "+x[3:]) for x in df['postal_code']]

输出:

   ID postal_code
0   1     k1b 6j2
1   2     k1b 6j3
2   3     k1b 6j4
3   4     k1b 6j5

最后,与100k长度数据帧中的一些其他方法进行比较:

df['postal_code'] = [(x[:3]+" "+x[3:]) for x in df['postal_code']] 
First method time:  0.08260965347290039
df['postal_code'] = df["postal_code"].str[:3] + " " + df["postal_code"].str[3:]
Second method time:  0.112518310546875

另一种方法是使用pandas string support,它有一系列很好的方法来处理字符串,例如字符串列的直接切片:

>>> import pandas as pd
>>> df = pd.DataFrame({"index": range(10), "code": ["k1b6j2"]*10})
>>> df["postal_code"] = df["code"].str[:3] + " " + df["code"].str[3:]
>>> df
   index    code postal_code
0      0  k1b6j2     k1b 6j2
1      1  k1b6j2     k1b 6j2
2      2  k1b6j2     k1b 6j2
3      3  k1b6j2     k1b 6j2
4      4  k1b6j2     k1b 6j2
5      5  k1b6j2     k1b 6j2
6      6  k1b6j2     k1b 6j2
7      7  k1b6j2     k1b 6j2
8      8  k1b6j2     k1b 6j2
9      9  k1b6j2     k1b 6j2

相关问题 更多 >

    热门问题