有什么优化的方法使这个函数工作得更快吗?


def getDiff(rows, cols, df1, df2):
for item in zip(rows, cols):
df1.iloc[item[0], item[1]] = '{} --> {}'.format(df1.iloc[item[0], item[1]],
df2.iloc[item[0], item[1]])
return df1

该函数标识两个数据帧的差异。这工作得很好,但是,如果数据帧中有更多的差异或更多的记录,则需要很长时间。

我在这里寻找任何更快的方法来实现这一点?

如果使用

def getDiff(rows, cols, df1, df2):
for r,c in zip(rows, cols):
df1.iloc[r, c] = '{} --> {}'.format(df1.iloc[r, c], df2.iloc[r, c])
return df1

甚至:

def getDiff(rows, cols, df1, df2):
for item in zip(rows, cols):
df1.iloc[item] = '{} --> {}'.format(df1.iloc[item], df2.iloc[item])
return df1

但是这些都不会改变速度。你没有告诉我们很多关于数据帧的信息,但是即使它们以数字dtype开始,通过将这个字符串写入df1,你已经将它变成了objectdtype数组。

pandas有一些字符串方法,可能适用于整个系列,但我不熟悉。

最新更新