pythonを用いて二つのcsvファイルから最小値を見つけ、見つけた最小値同士を足し算したスクリプトが以下となります。
import pandas as pd
filename = pd.read_csv('OD(1).csv', encoding="SHIFT-JIS")
listA = []
listB = []
listC = []
listA = filename['OriginID']
listB = filename['DestinationID']
listC = filename['Shape_Length']
min_ik=99999
leng = len(listA)
leng = len(listB)
for n in range(leng):
if listC[n]<min_ik:
min_ik=listC[n]
num = n
print("最小値は"+str(min_ik)+"であり"+"この時の経路は"+str(listA[num])+"-"+str(listB[num]))
filename = pd.read_csv('OD(2).csv', encoding="SHIFT-JIS")
listD = []
listE = []
listF = []
listD = filename['OriginID']
listE = filename['DestinationID']
listF = filename['Shape_Length']
min_kj=99999
leng = len(listD)
leng = len(listE)
for n in range(leng):
if listF[n]<min_kj:
min_kj=listF[n]
num = n
print("最小値は"+str(min_kj)+"であり"+"この時の経路は"+str(listD[num])+"-"+str(listE[num]))
lik = min_ik
lkj = min_kj
lij = lik + lkj
print(lij)
OD(1).csvの中身は以下の通り
[OriginID,DestinationID,Shape_Length][1,A,10][2,B,15][3,A,5]
OD(2).csvの中身は以下の通り
[OriginID,DestinationID,Shape_Length][A,X,100][A,Y,50][B,Z,30]
上記の内容だと
最小値は5でありこの時の経路は3-A
最小値は30でありこの時の経路はB-Z
35
となります。
これに条件としてOD(1).csvのDestinationIDとOD(2).csvのOriginIDが同じもの同士を計算し、最小値を出したいとしたときに(if分を使用することになるかと思いますが)どのような文を追加することで、得たい結果になりますでしょうか。
具体的には、
OD(2).csvの[B,Z,30]は固定で、OD(1).csvの中の[ ,B, ]というものの中から最小値を出したいと考えております。
今回であれば
最小値は15でありこの時の経路は2-B
最小値は30でありこの時の経路はB-Z
45
という結果を得たいです。
基本的な内容で申し訳ございませんが、ご教授いただけたら幸いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー