How to get rid of Unnamed: column in a pandas dataframe

I have a situation wherein sometimes when I read a csv from df I get an unwanted index-like column named unnamed:0. This is very annoying! I have tried

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

which I thought was a solution to this, but I am still getting the unnamed:0 column! Does anyone have an idea on this?

It's the index column, pass index=False to not write it out, see the docs

Example:

    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

compare with:

    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

You could also optionally tell read_csv that the first column is the index column by passing 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

From: stackoverflow.com/q/36519086