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
,你已经将它变成了object
dtype数组。
pandas
有一些字符串方法,可能适用于整个系列,但我不熟悉。