我使用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,但它产生了一些奇怪的结果。我相信这些内置函数有能力执行我正在尝试的任务,并将大大提高速度,但我不确定如何正确使用它们。
我试图完成的最好的描述是将两个透明表放在彼此之上,并将缺少的信息从主文件写入子集文件,但随后删除主文件并保留更新的子集文件。
1条答案
按热度按时间vbopmzt11#
我认为最好的解决方案是使用主数据框更新子集数据框: