微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 更快地处理Pandas中的Dataframe

我正在尝试处理非常大的文件(10,000个观察),其中邮政编码不容易格式化.我需要将它们全部转换为前5位数,这是我当前的代码

def makezip(frame, zipcol):
    i = 0
    while i < len(frame):
        frame[zipcol][i] = frame[zipcol][i][:5]
        i += 1
    return frame

frame是数据帧,zipcol是包含邮政编码的列的名称.虽然这有效,但处理需要很长时间.有更快的方法吗?

解决方法:

您可以在字符串列上使用.str访问器来访问某些特定的字符串方法.在此,您还可以切片:

frame[zipcol] = frame[zipcol].str[:5]

基于一个小例子,循环遍历行的速度快了约50倍:

In [29]: s = pd.Series(['testtest']*10000)

In [30]: %timeit s.str[:5]
100 loops, best of 3: 3.06 ms per loop

In [31]: %timeit str_loop(s)
10 loops, best of 3: 164 ms per loop

蒙山

In [27]: def str_loop(s):
   .....:     for i in range(len(s)):
   .....:         s[i] = s[i][:5]
   .....:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐