2つの列をグループ化していくつか変更を加えました。python pandasを使用してデータフレームから重複する列を削除する方法
私はPythonを使用してファイルを生成しました。その結果、2つの重複した列が作成されました。データフレームから重複する列を削除するにはどうすればよいですか?
2つの列をグループ化していくつか変更を加えました。python pandasを使用してデータフレームから重複する列を削除する方法
私はPythonを使用してファイルを生成しました。その結果、2つの重複した列が作成されました。データフレームから重複する列を削除するにはどうすればよいですか?
それは(彼らはあまりにも重複した名前を持っていると仮定)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
は通常、名前が異なることを保証します...
FYI @Andy、この '' mangle_dup_cols''を制御する0.11.1の新しいオプションがあります。デフォルトはmangleです(例:ユニークなcolを生成する)。0.12では、dupsをそのまま残すように変更されます。 – Jeff
大規模なDataFramesを扱う場合、転置は悪い考えです。メモリ効率のよい代替方法については、この回答を参照してください。https://stackoverflow.com/a/32961145/759442
他の人のために、最良の答えがそのスレッドで受け入れられたものではないことに注意してください。ベストアンサー - > https://stackoverflow.com/a/40435354/2507197 – Alter
これは私が今までに見つけた最高のものです。
remove = []
cols = df.columns
for i in range(len(cols)-1):
v = df[cols[i]].values
for j in range(i+1,len(cols)):
if np.array_equal(v,df[cols[j]].values):
remove.append(cols[j])
df.drop(remove, axis=1, inplace=True)
は、私は、これは古い問題であることを理解し、私は最近、これと同じ問題を持っていたし、これらのソリューションのどれも私のために働いていない、またはループ提案がビットやり過ぎに見えました。最後に、望ましくない重複カラムのインデックスを見つけて、そのカラムインデックスを削除しました。だから、あなたはおそらくデバッグや印刷のステートメントで見つけることができるこれは動作する列のインデックスを知っていれば:
df.drop(df.columns[i], axis=1)
それらは同じ列名を持っていますか? – waitingkuo