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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

722閲覧

csv形式のシステムログファイルをdataframeに読み込んでpandasで行を遡って探索して追記したいです。

zumzum

総合スコア3

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/10/12 12:24

編集2021/10/12 13:03

前提・実現したいこと

複数のcsv形式のシステムログファイルを1つのdataframeに読み込んで
pandasで行探索して追記したいです。

csvのログファイルは以下のような例になります。

Time ID Message 確認要否
11:01:34.567 10001 接続要求 否
11:01:34.710 10002 接続要求 否
11:01:34.989 10003 接続要求 要
:
11:01:37.567 10001 変更要求 ★
11:01:38.102 10003 変更要求 ★
:
11:05:10.829 10001 切断要求
:
11:17:22.810 10001 接続要求 要
:
11:23:10.220 10001 変更要求 ★

接続要求に対してIDが払い出されます。
接続要求のMessageに対しては確認要否の判定が付きますが、
変更要求のMessageに対しては確認要否の判定が付かないシステムです。
IDは切断手順後に別の手順に再利用されます。
その場合、過去に払い出された時とは確認要否が異なる場合があります。
応答Messageは別に除外しており考慮する必要はありません。
変更要求のMessageのIDが確認要か否かを分かるように判定を追加したいです。

openpyxlではforとifで"変更要求のMessageのID + 接続要求のMessage"を条件に
セルを指定して(-1行)で遡って同じIDの過去最新の接続要求を探索しヒットした行の確認要否を
変更要求のIDの★の箇所にコピーして、その後にbreakeして抜けるようにして実現できておりました。
最近はログ行数増えており、エクセル最大行数を超えてツールが落ちるようになった為、
pandasで実現したいのですが、実装方法がわからずできておりません。

良い方法がありましたら是非ご教示頂きますようお願いたします。

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

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

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

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

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

can110

2021/10/12 12:52 編集

「よい解決法」とは具体的にどのようなものを期待しているのでしょうか? 基本的に従来の方法と同じ手順をdataframeで実装すればよいかと思いますが、その実装方法が分からないということでしょうか? そもそも「エクセル最大行数を超えて」ということは百万行以上あるようですから、CSVではなくDBに格納すべきと思いますが。
can110

2021/10/12 13:11

具体的に実装するうえでどこまで(CSVの読み込みまでは分かるなど)、およびどの部分からが分からないかを記載するとよいかと思います。 また、現状openpyxlで実現できているコードを提示すると、それに沿った回答が得られやすくなるかと思います。
zumzum

2021/10/12 13:18

ご指摘頂きましたようにopenpyxlと同じ方法で動かしたいのですがセルのような指定方法がわからずできておりません。文言を修正させて頂きました。 またDBに格納とはcsv形式のログをpythonでDBに格納するという手法でしょうか。
zumzum

2021/10/12 13:22

ご指摘頂きましたとおりと思いましたのと、業務で活用しようとしておりますので、時間が取れれば問題ない形でopenpyxlの現状のコードを追記させて頂こうと思います。
can110

2021/10/12 13:25

まずは現状のopenpyxlで実現できているコードを示すのがよいかと。 > またDBに格納とはcsv形式のログをpythonでDBに格納するという手法でしょうか。 何によってとは限らず、です。大抵のDBは、CSVから取り込む手段が用意されているので。
guest

回答1

0

自己解決

openpyxlの方法と同じ手順相当のコードをdataframeで実装できました。
お手数をおかけいたしました。

投稿2021/10/13 10:13

zumzum

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問