我有以下代码,是在另一篇帖子上找到的(稍作修改)。它的输出效果非常好,符合我的预期。但是我想知道是否有人对于提高速度有什么建议。我正在比较两个数据框,大约有93,000行和110列。groupby需要20分钟才能完成。我尝试想出加速方法,但没有发现任何有效方法。我现在正在努力想想未来如何处理更大的数据量。我也愿意尝试其他方法解决这个问题!
###Function that is called to check values in dataframe groupby
def report_diff(x):
return 'SAME' if x[0] == x[1] else '{} | {}'.format(*x)
#return '' if x[0] == x[1] else '{} | {}'.format(*x)
print("Concatening CSV and XML data together...")
###Concat the dataframes together
df_all = pd.concat(
[df_csv, df_xml],
axis='columns',
keys=['df_csv', 'df_xml'],
join='outer',
)
print("Done")
print("Swapping column levels...")
###Display keys at the top of each column
df_final = df_all.swaplevel(axis='columns')[df_xml.columns[0:]]
print("Done")
df_final = df_final.fillna('None')
print("Grouping data and checking for matches...")
###Apply report_diff function to each row
df_excel = df_final.groupby(level=0, axis=1).apply(lambda frame: frame.apply(report_diff, axis=1))
df_csv
和df_xml
创建一些虚拟数据吗(最好是以字典格式)?我感觉使用向量化操作可以显著提高速度。 - Sven Harrisdf_csv = pd.DataFrame({"a":[1,2,3]})
,它将有助于理解代码运行方式并验证给出的答案是否返回了预期值。 - Sven Harris