2013-06-05 19 views

cevap

17

Bir GroupBy kullanmak muhtemelen en kolay (varsayarak onlar da yinelenen adlara sahip):

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 

farklı isimler varsa Eğer devrik üzerinde drop_duplicates yapabilirsiniz: Genellikle

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 genellikle farklı adlara sahip olduklarından emin olurlar ...

+0

FYI @Andy, bu "mangle_dup_cols" işlevini denetleyen 0.11.1'de yeni bir seçenek var; varsayılan, 0,122'de mangle (ör. benzersiz cols üretin) şeklindedir, bu, dups'ları yerinde bırakmak için değişecektir. – Jeff

2

Transpoze etme, büyük DataFrames ile çalışırken kötü bir fikirdir. Hafıza verimli bir alternatif için şu cevaba bakınız: https://stackoverflow.com/a/32961145/759442

+0

Diğerleri için en iyi cevabın bu iş parçacığında kabul edilen bir not olmadığına dair bir not. En iyi cevap -> https://stackoverflow.com/a/40435354/2507197 – Alter

0

Ben bu eski bir sorudur anlıyoruz, ama son zamanlarda bu aynı sorunu vardı ve bu çözümlerin hiçbiri benim için çalıştı, ya da döngü öneri biraz overkill gibiydi. Sonunda, istenmeyen yinelenen sütunun dizinini buldum ve bu sütun dizinini düşürdüm. Bu nedenle, (bu hata ayıklama veya baskı ifadeleri aracılığıyla bulabileceğiniz) sütunun dizinini bilmeniz şartıyla sağlandı:

df.drop(df.columns[i], axis=1) 
İlgili konular