2017-04-21 39 views
1

列の順序付けは無意味ですが、列の組み合わせが意味のあるデータセットがあります。換言すれば、次のデータフレームの例で:列の順序を無視しながら重複行を削除する

[A,B,C,D]カラムヘッダであり、 [h,i,j,k]が同一とみなすことができる値 - row 1row 2細胞である
| A | B | C | D | 
|---------------| 
| h | i | j | k | 
| k | j | h | k | 

私が解決しようとしている問題は、この2行目を原則削除することです。私は使用方法に慣れています:df.delete_duplicates()しかし、これはこれらの2つの行が等価であるとは見えません。 私が思った解決策は、各行をアルファベット順に並べ替えることですが、これを行う方法は考えられません。

感謝ヘルプ、

ルカ

+0

を:)問題ではない最初の行は、第二にはない、 'i'値を有することを望みます。それらはどのように同じですか?また、 'pandas'タグを追加し、' jupyter-notebook'を削除してください。 – gereleth

+0

2行目がタイプミスで、 'k'ではなく' i'が必要な場合は、[this](http://stackoverflow.com/a/43528612/2901002) – jezrael

答えて

0

値の順序が

import pandas as pd 
a = list('hkjk') 
b = list('kjhk') 
df = pd.DataFrame([a, b], columns=list('ABCD')) 
cols = df.columns.tolist() 
df = df.to_dict(orient='index') 
new_records = {k1: list(sorted([v2 for k2, v2 in v1.items()])) for k1, v1 in df.items()} 
df = pd.DataFrame([v for _, v in new_records.items()], columns = cols) 
df.drop_duplicates(inplace=True) 
関連する問題