質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

192閲覧

PythonでのCSV読み込みと、for文内での数値の合計の仕方について

kasss

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/01/19 08:35

編集2019/01/21 11:04

前提・実現したいこと

Python+プログラミング初心者です。
あるデータのログをcsvにまとめたものを読み込んで、
時間ごとのAとBの大きさを指標として取り出したいのですが、
同じタイムスタンプのデータが並んでしまっている場合、下記のように数字が併記されてしまうのですが、
これを、同じタイムスタンプ時のデータを合計して出力したいのですが、良い方法がわからず困っています。

何か良い方法があれば教えていただけないでしょうか。
よろしくお願いいたします。

発生している問題・エラーメッセージ

{'A': {}, 'B': {1547272521.527: '0.02 '}} {'A': {}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.00549'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.00549 0.01 '}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.00549 0.01 0.01 '}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.00549 0.01 0.01 0.02450'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.00549 0.01 0.01 0.02450'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433', 1547272521.027: '0.0590'}} >>>

出力したいデータの形

{'A': {}, 'B': {1547272521.527: '0.02 '}} {'A': {}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.00549'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.01549'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.02549'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.04999'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433'}} {'A': {1547272521.167: '0.04999'}, 'B': {1547272521.527: '0.02 ', 1547272521.497: '0.5433', 1547272521.027: '0.0590'}}

該当のソースコード

Python

1#coding:utf-8 2import csv 3from dateutil.parser import parse 4global executions 5 6executions = { 7 'A': {}, 8 'B': {} 9} 10 11f = open('to_csv_out.csv', 'r') 12reader = csv.reader(f) 13for order in reader: 14 timestamp = parse(order[1]).timestamp() 15 #print(timestamp) 16 17 if timestamp in executions[order[2]]: 18 executions[order[2]][timestamp] += order[4] 19 else: 20 executions[order[2]][timestamp] = order[4] 21 print(executions) 22

読み込むCSV

0,2019-01-12 05:55:21.527000+00:00,B,393568.0,0.02 1,2019-01-12 05:55:21.497000+00:00,B,393567.0,0.543 2,2019-01-12 05:55:21.167000+00:00,A,393574.0,0.005 3,2019-01-12 05:55:21.167000+00:00,A,393576.0,0.01 4,2019-01-12 05:55:21.167000+00:00,A,393576.0,0.01 5,2019-01-12 05:55:21.167000+00:00,A,393582.0,0.024 6,2019-01-12 05:55:21.027000+00:00,B,393574.0,0.059

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2019/01/19 15:07

いまいち要件がよくわからないのですが、最終的にどのように出力されるのが理想なのでしょうか?
kasss

2019/01/21 11:05

ご連絡遅くなり申し訳ありません。 初心者のため、説明が難しいのですが 上記のように同じタイムスタンプでの数値は合計して出力したいのです。何か良い方法ありませんでしょうか。
guest

回答1

0

ベストアンサー

文字列として連結されていますから、floatにでもして格納してみては。

python

1 if timestamp in executions[order[2]]: 2 executions[order[2]][timestamp] += float(order[4]) 3 else: 4 executions[order[2]][timestamp] = float(order[4])
# 得られた出力 # CSVが質問文のデータと違う気がする {'A': {}, 'B': {1547272521.527: 0.02}} {'A': {}, 'B': {1547272521.527: 0.02, 1547272521.497: 0.543}} {'A': {1547272521.167: 0.005}, 'B': {1547272521.527: 0.02, 1547272521.497: 0.543}} {'A': {1547272521.167: 0.015}, 'B': {1547272521.527: 0.02, 1547272521.497: 0.543}} {'A': {1547272521.167: 0.025}, 'B': {1547272521.527: 0.02, 1547272521.497: 0.543}} {'A': {1547272521.167: 0.049}, 'B': {1547272521.527: 0.02, 1547272521.497: 0.543}} {'A': {1547272521.167: 0.049}, 'B': {1547272521.527: 0.02, 1547272521.027: 0.059, 1547272521.497: 0.543}}

投稿2019/01/21 11:57

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kasss

2019/01/21 13:13

おおお!!!うまくいきました!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問