分析熊猫数据框.loc语句显示在__str__中花费的时间的40%

时间:2018-07-16 12:19:53

标签: python-3.x pandas dataframe

我已经使用Pandas编写了一种算法,该算法围绕修改原始数据帧并评估以下几种条件而构建:

df.loc[df.a < df.a.shift(2), 'c1' ] = 1
df.loc[df.b > df.b.shift(2), 'c2' ] = 2
...
df.loc[df.c1 < df.c1.shift(1), 'c3' ] = 0
df.loc[df.c2 > df.c2.shift(1), 'c4' ] = 2
...

Profiling using snakeviz 1/2 Profiling using snakeviz 2/2

此配置文件表明40%的时间都花在了 str 上,这对完成的工作而言似乎太过分了。当查看被调用的代码时,似乎我在代码上进行处理以解决python 2.X和3.X之间的兼容性问题。

class StringMixin(object):
"""implements string methods so long as object defines a `__unicode__`
method.

Handles Python2/3 compatibility transparently.
"""
# side note - this could be made into a metaclass if more than one
#             object needs

# ----------------------------------------------------------------------
# Formatting

def __unicode__(self):
    raise AbstractMethodError(self)

def __str__(self):
    """
    Return a string representation for a particular Object

    Invoked by str(df) in both py2/py3.
    Yields Bytestring in Py2, Unicode String in py3.
    """


    if compat.PY3:
        return self.__unicode__()
    return self.__bytes__()

我正在寻找一种避免在数据框上使用'.loc'语句时过度使用 str 的方法。任何想法/指针都将受到欢迎!

0 个答案:

没有答案