2016-04-09 20 views
40

Mam sytuację, w której czasami, gdy czytam csv z df, otrzymuję niechcianą kolumnę o indeksie o nazwie unnamed:0. To bardzo denerwujące! PróbowałemPandy: jak pozbyć się kolumny "Bez nazwy" w ramce danych

merge.to_csv('xy.df', mode = 'w', inplace=False) 

które uważałem, że było to rozwiązanie do tego, ale ja wciąż się kolumnę unnamed:0! Czy ktoś ma pomysł na ten temat?

Odpowiedz

54

To kolumna indeksu, przechodzą index=False aby nie pisać go, zobacz docs

Przykład:

In [37]: 
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc')) 
pd.read_csv(io.StringIO(df.to_csv())) 

Out[37]: 
    Unnamed: 0   a   b   c 
0   0 0.109066 -1.112704 -0.545209 
1   1 0.447114 1.525341 0.317252 
2   2 0.507495 0.137863 0.886283 
3   3 1.452867 1.888363 1.168101 
4   4 0.901371 -0.704805 0.088335 

porównanie z:

In [38]: 
pd.read_csv(io.StringIO(df.to_csv(index=False))) 

Out[38]: 
      a   b   c 
0 0.109066 -1.112704 -0.545209 
1 0.447114 1.525341 0.317252 
2 0.507495 0.137863 0.886283 
3 1.452867 1.888363 1.168101 
4 0.901371 -0.704805 0.088335 

Można też ewentualnie powiedzieć read_csv że pierwsza kolumna jest kolumną indeksową, mijając index_col=0:

In [40]: 
pd.read_csv(io.StringIO(df.to_csv()), index_col=0) 

Out[40]: 
      a   b   c 
0 0.109066 -1.112704 -0.545209 
1 0.447114 1.525341 0.317252 
2 0.507495 0.137863 0.886283 
3 1.452867 1.888363 1.168101 
4 0.901371 -0.704805 0.088335 
+0

Dzięki EdChum! Zirytowanie wyeliminowane! Pomyśleć, że właśnie czytałem dokumenty i szukałem tego rozwiązania. Jakoś nie rozumiałem właściwie. –

Powiązane problemy