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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

Q&A

0回答

864閲覧

ファイル間の共通idごとにデータをまとめたい

amaturePy

総合スコア131

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

0グッド

0クリップ

投稿2020/05/18 16:09

編集2020/05/19 01:23

Python3系・pandasを使って添付の2つのファイルを処理しています。
現状はpandasでCSVの必要なカラム(CompIDとOID部分)を読み取って、繋げてという作業をしてみたのですが、自分がしている作業が下記の実装したい内容に近づいている気がせず、ご質問させて頂いてます。
コードの指針だけでも頂ければ幸いです。
やろうとしていることに対しての実力不足が否めないので、今できなくても今後に繋がればと考えてます。
業務で使用しているCSV出力時のままで使用しているため、CSVに空カラムが入っています。醜くて申し訳ありません。
「実装したいこと」
OIDがファイルにまたがって、どのCompIDに属しているかを洗い出したいです。
また、node_file2とnode_file3でCompIDが重複している物は(2)、(3)で分けています。
「理想の結果一部」

OID CompID 1618544796 ['5906(2)', '5906(3)'] 1043253441 ['5906(2)', '5906(3)'] 1468827215 ['5906(2)', '5906(3)'] OIDなし ['7996(2)', '5083(2)', '5086(2)', '906(2)', '2578(2)', '906(3)', '340(3)', '7864(3)', '7887(3)', '8529(3)', '8618(3)', '9198(3)', '7996(3)', '2924(3)', '8681(3)', '9635(3)', '10027(3)', '10036(3)', '10054(3)'] 1514122738 ['7299(2)', '9179(3)', '9181(3)', '7299(3)', '8856(3)', '4511(3)']

「CSVデータカラム」

[node_file2] |node_id|CompID|Message||空カラム|空カラム|bef_id||choice|空カラム|percentage||CV|OID| 5906 1618544796 [node_file3] |node_id|CompID|Message||bef_id||choice||percentage||CV|OID|       5906                          1618544796
import pandas as pd file0 = "./node_file2.csv" file1 = "./node_file3.csv" fr0 = pd.read_csv(file0, usecols=[1]) read_oid0 = pd.read_csv(file0, usecols=[1,11]) read_oid1 = pd.read_csv(file1, usecols=[1,8]) split_oid0 = read_oid0['OID'].str.split('/', expand=True) split_oid0 = split_oid0.fillna('OIDなし') split_oid1 = read_oid1['OID'].str.split('/', expand=True) split_oid1 = split_oid1.fillna('OIDなし') merge_data = read_oid0.join(split_oid0) print(merge_data0)

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

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

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

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

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

x98000

2020/05/18 22:34

考えが進まないのは、まとめ方(アウトプットのイメージ)が出来ていないからでは無いでしょうか。 まず、OID,CompID,入力ファイルの関係は(N:1):Nでしょうか。 そうするとアウトプットは、 OID CompID file2 file3 -------------------------------------- 1618544796 5906 True True 1043253441 5906 True True 1234567890 5907 True False NaN 7996 True False みたいな感じにまとめられますかね?
amaturePy

2020/05/19 01:26

ありがとうございます!file2とfile3はヘッダーという認識でよろしいでしょうか?
x98000

2020/05/19 01:45

入力元(node_file2.csvとnode_file3.csv)のどちらに存在するかという意味合いです。
amaturePy

2020/05/19 02:31 編集

ありがとうございます! 頂いたアドバイスを加味して考えていますが、なかなか「辞書を作って。。。」とか曖昧で具体的な実装できるコードが思い浮かばないですね。。。 難しいですね。。。(笑) もうちょっと考えてみて、時間がかかるかもしれないですが、できるかできないか判断してみます。
x98000

2020/05/19 03:12

具体的なアウトプットイメージをまとめないと誰もアドバイスできないですよ。上に書いたイメージはちょっと違いますか?
amaturePy

2020/05/19 04:42 編集

はい!そうです!どのfileに属しているが視覚化できれば良いので、その通りです。 この処理はできれば業務効率化でPythonでやりたいのですが、ちょっと基礎かじったくらいではむずかしそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問