文章にすると長くなりそうなので箇条書きにします。
・行数の異なる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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。