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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

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

Q&A

解決済

2回答

2935閲覧

複数のcsvファイルの要素を対応づけたい

farinelli

総合スコア61

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

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

0グッド

0クリップ

投稿2019/08/29 14:03

文章にすると長くなりそうなので箇条書きにします。
・行数の異なる2つのcsvファイル(以下①②)から出力した2次元配列を取得する
・前者のファイルの行毎の最大値がその行の2番目に大きい値の2倍を超える行に限り、以下の要素を得る
「①の0番目の要素(❶とする), ①の最大値, (❶と同じものを含む最後の要素の左隣に位置する)②の0番目の要素, (❶と同じものを含む)最後の要素」の順番で取得する(ここの部分が完全でない)

現在、以下のエラーが出ております。
乱文で恐縮ですが、下記のような出力結果を得る為にお知恵をお貸しいただけますと幸いです。宜しくお願いします。

理想の出力結果

[A, 14, 中村, "A,Q,V"] [A, 14, 小野, "A,B,M"]

エラー

comp2.py:8: UserWarning: Boolean Series key will be reindexed to match DataFrame index. target_row = df[df2['Group member'].str.contains(idx)].iloc[0] Traceback (most recent call last): File "comp2.py", line 8, in <module> target_row = df[df2['Group member'].str.contains(idx)].iloc[0] File "/Users/macuser/.pyenv/versions/3.7.4/lib/python3.7/site-packages/pandas/core/frame.py", line 2971, in __getitem__ return self._getitem_bool_array(key) File "/Users/macuser/.pyenv/versions/3.7.4/lib/python3.7/site-packages/pandas/core/frame.py", line 3023, in _getitem_bool_array key = check_bool_indexer(self.index, key) File "/Users/macuser/.pyenv/versions/3.7.4/lib/python3.7/site-packages/pandas/core/indexing.py", line 2411, in check_bool_indexer "Unalignable boolean Series provided as " pandas.core.indexing.IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).

コード

comp2.py

1import pandas as pd 2df = pd.read_csv('renshu.csv', index_col='Name') 3df2 = pd.read_csv('renshu2.csv') 4for idx, row in df.iterrows(): 5 score = row['One':'Three'].sort_values(ascending=False) 6 if score.iloc[0] >= score.iloc[1] * 2: 7 # 'Group member'に idx を含んでる行を求める 8 target_row = df[df2['Group member'].str.contains(idx)].iloc[0] 9 print([idx, score.iloc[0], target_row['Group name'], target_row['Group member']])

ファイル

renshu.csv

1Name,One,Two,Three, 2A,3,3,14 3B,3,1,2 4C,3,2,2

renshu2.csv

1Group name,Group member 2杉田,"B,F,R" 3中村,"A,Q,V" 4宮野,"C,J,N" 5小野,"A,B,M" 6神谷,"D,W,Z"

補足情報(FW/ツールのバージョンなど)

iOS 10.14.6, Python 3.7.4, Atom

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

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

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

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

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

guest

回答2

0

自己解決

夢中でコードを書いてたら自己解決してました.お騒がせしました.

投稿2019/10/09 06:37

farinelli

総合スコア61

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

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

0

1回目のループで、df2['Group member'].str.contains(idx) は「False、True、False、True、False」の5個の値となります。
しかし、dfは3行のデータしかありませんので下記コードはエラーとなります。

Python

1df[df2['Group member'].str.contains(idx)]

投稿2019/08/31 03:19

編集2019/08/31 03:21
meg_

総合スコア10580

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

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

farinelli

2019/09/01 08:41

回答有難うございます。 この場合考え方としてはどのようにすると理想の結果に近づきますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問