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

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

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

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

Q&A

解決済

2回答

328閲覧

drop_duplicatesで重複を削除した後、残ったものを抽出する

nouken

総合スコア369

Python

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

0グッド

0クリップ

投稿2018/06/11 07:55

データフレームdf1(7976 rows × 167 columns)があります。

df2=df1.drop_duplicates()でdf2(6439 rows × 167 columns)を得ます。

ここでdf1から削除された行の中で特定のインデックスに対応する行(これらのインデックスはindex_listに入っているとします。12個のインデックスです。)と重複しており、df2に残ったもののインデックスを取り出したいです。わかりにくいかもしれませんが、削除された行の中でindex_listに含まれるインデックスを持った行と重複していながらも重複一番目だけを残す条件(keep=first)により残ったもののインデックスを知りたいです。

なお重複している場合はすべてのコラムの値が重複しています。

下を実行し以下のエラーが出ました。

python

1 2get_index=[] 3for i in index_list: 4 for j in df2.index: 5 if df1.loc[i, :]==df2.loc[j,:]: 6 get_index.append(j) 7 8get_index 9 10 11--------------------------------------------------------------------------- 12 13ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 14

どうぞよろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こうですかね。

Python

1get_index=[] 2for i in index_list: 3 for j in df2.index: 4 if (df1.loc[i, :] == df2.loc[j, :]).all(): 5 get_index.append(j)

投稿2018/06/11 08:47

magichan

総合スコア15898

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

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

nouken

2018/06/11 10:25

回答ありがとうございます。お聞きしたいのですが、ここでのall関数の意味はどういうものなのでしょう?調べたのですが、このような使い方の例は見つけられなかったのですが‥
magichan

2018/06/11 10:47

df1.loc[i, :] == df2.loc[j, :] の部分は df の行データ(Series)同士の比較を行っておりますので、その結果はbool型のSeriesデータで得られます。
magichan

2018/06/11 10:48

こんなかんじ print(pd.Series([1,2]) == pd.Series([1,2])) #0 True #1 True #dtype: bool print(pd.Series([1,2]) == pd.Series([1,3])) #0 True #1 False #dtype: bool
nouken

2018/06/11 11:12

なるほど!非常にわかりやすい説明ありがとうございます!
guest

0

python

1import numpy as np 2import pandas as pd 3 4df = pd.DataFrame() 5df['a'] = np.random.randint(5, size=10) 6df2 = df.drop_duplicates(keep='first') 7print(df) 8print(df2.index) 9print(df2.sort_values('a').index)

投稿2018/06/11 09:53

mkgrei

総合スコア8560

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問