2013-06-05 54 views

答えて

17

それは(彼らはあまりにも重複した名前を持っていると仮定)GROUPBYを使用するために、おそらく最も簡単です:

In [11]: df 
Out[11]: 
    A B B 
0 a 4 4 
1 b 4 4 
2 c 4 4 

In [12]: df.T.groupby(level=0).first().T 
Out[12]: 
    A B 
0 a 4 
1 b 4 
2 c 4 

彼らはあなたは転置上drop_duplicatesできるさまざま名がある場合:通常

In [21]: df 
Out[21]: 
    A B C 
0 a 4 4 
1 b 4 4 
2 c 4 4 

In [22]: df.T.drop_duplicates().T 
Out[22]: 
    A B 
0 a 4 
1 b 4 
2 c 4 

read_csvは通常、名前が異なることを保証します...

+0

FYI @Andy、この '' mangle_dup_cols''を制御する0.11.1の新しいオプションがあります。デフォルトはmangleです(例:ユニークなcolを生成する)。0.12では、dupsをそのまま残すように変更されます。 – Jeff

2

大規模なDataFramesを扱う場合、転置は悪い考えです。メモリ効率のよい代替方法については、この回答を参照してください。https://stackoverflow.com/a/32961145/759442

+0

他の人のために、最良の答えがそのスレッドで受け入れられたものではないことに注意してください。ベストアンサー - > https://stackoverflow.com/a/40435354/2507197 – Alter

0

は、私は、これは古い問題であることを理解し、私は最近、これと同じ問題を持っていたし、これらのソリューションのどれも私のために働いていない、またはループ提案がビットやり過ぎに見えました。最後に、望ましくない重複カラムのインデックスを見つけて、そのカラムインデックスを削除しました。だから、あなたはおそらくデバッグや印刷のステートメントで見つけることができるこれは動作する列のインデックスを知っていれば:

df.drop(df.columns[i], axis=1) 
関連する問題