【问题标题】:Faster processing of Dataframe in Pandas在 Pandas 中更快地处理 Dataframe
【发布时间】:2015-07-31 22:15:35
【问题描述】:

我正在尝试处理邮政编码不易格式化的非常大的文件(超过 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 是包含邮政编码的列的名称。虽然这可行,但需要很长时间才能处理。有没有更快的方法?

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以在字符串列上使用.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]
   .....:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多