pandas 如何提高这个程序的运行速度?

jjjwad0x  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(168)

我使用Python和pandas库以及两个csv文件。
包含所有可能出现的情况的主文件和包含主文件一部分的子集文件。这些文件包含相同的列名,但行数不同。子测试文件中有结果,但其中两列缺少信息。
我可以使用两个for循环来更新子集文件中缺失的信息:

for (indexS, valuesS) in subset.iterrows():
    #print(values.values[27])
    for (indexM, valuesM) in master.iterrows():
        if valuesS.values[3] == valuesM.values[3] and valuesS.values[27] == valuesM.values[27]:
            valuesS.values[4] = valuesM.values[4]
            valuesS.values[5] = valuesM.values[5]
            break
    print(valuesS.values[4])
    print(valuesS.values[5])
print(subset)

two for loops filling in missing informaiton
但是这需要很长的时间来运行。主文件可以有100,000多行。所以它循环并检查每一行是低效的。
我一直在尝试使用pandas函数,如concat,merge,join,合并_first,但它产生了一些奇怪的结果。我相信这些内置函数有能力执行我正在尝试的任务,并将大大提高速度,但我不确定如何正确使用它们。
我试图完成的最好的描述是将两个透明表放在彼此之上,并将缺少的信息从主文件写入子集文件,但随后删除主文件并保留更新的子集文件。

vbopmzt1

vbopmzt11#

我认为最好的解决方案是使用主数据框更新子集数据框:

subset = subset.set_index([subset.columns[3], subset.columns[27]])
master = master.set_index([master.columns[3], master.columns[27]])
subset.update(master[[master.columns[4], master.columns[5]]])
subset = subset.reset_index()

相关问题