現状
pandasを使用して、csvファイルを読み込み、id列のidが同じ時、計算処理をするプログラム
を作成した。
問題
しかし、上司から後から、1行ずつ読み込めるプログラムを作れと言われた。
pandasだと1行ずつ読み込むのは難しいとwebサイトで読んだ。
前のプログラム
python
1import pandas as pd 2 3#引数 4ip = input("計算するcsvファイル名を入力してください(例:test5.csv):") 5print(ip) 6distance = int(input("距離を入力してください(メートル):")) 7print(distance) 8mes = int(input("計算するスピードの単位を決めてください 1:時速 2:分速 3:秒速 ")) 9 10 11#csvファイルの読み込み 12df = pd.read_csv(f"./{ip}", parse_dates=['datetime']) 13 14 15#idが同じのがあったら、mesの値によって求める 16if(mes == 1): 17 df['speed'] = df.groupby('id')['datetime'].apply(lambda d: distance / d.diff().shift(-1).dt.total_seconds()); 18 df['speed'] /= 3600; 19elif(mes == 2): 20 df['speed'] = df.groupby('id')['datetime'].apply(lambda d: distance / d.diff().shift(-1).dt.total_seconds()); 21 df['speed'] /= 60; 22elif(mes == 3): 23 df['speed'] = df.groupby('id')['datetime'].apply(lambda d: distance / d.diff().shift(-1).dt.total_seconds()); 24 25else: 26 print("正しい値を入力してください"); 27 pass; 28 29 30#csvファイルをスピードを表示したもの以外削除する 31df2 = df.dropna(how='any') 32print(df2) 33 34#csvファイルの書きだし(秒速の値をcsvファイルに書き込む) 35df2.to_csv('test4.csv')
前のプログラムを実行した時のターミナル
terminal
1TestuserMacBook-Pro:Desktop test$ python test5.py 2計算するcsvファイル名を入力してください(例:test5.csv):test6.csv 3test6.csv 4距離を入力してください(メートル):45 545 6計算するスピードの単位を決めてください 1:時速 2:分速 3:秒速 1 7 datetime label direction id x y w h speed 80 2019-02-21 17:15:14.500 車線1 right 9 719 407 147 175 0.010417 93 2019-02-21 17:16:11.600 車線1 right 213 746 504 141 142 0.011364 106 2019-02-21 17:19:10.300 車線1 right 533 851 396 140 161 0.011364 11TestuserMacBook-Pro:Desktop test$ 12
今作りかけのプログラム
python
1import csv 2a = input("計算するcsvファイル名を入力してください(例:test5.csv):") 3with open(a, newline='') as csvfile: 4 reader = csv.DictReader(csvfile) 5 for row in reader: 6 print(row['id'], row['datetime']) 7
回答1件
あなたの回答
tips
プレビュー