Vielleicht könnten Sie das Beste aus beiden Welten von einem Multiindex mit:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(8).reshape(4,2), index=['a_1', 'b_2', 'c_3', 'c_4'])
print(df)
# 0 1
# a_1 0 1
# b_2 2 3
# c_3 4 5
# c_4 6 7
index = pd.MultiIndex.from_tuples([item.split('_') for item in df.index])
df.index = index
print(df)
# 0 1
# a 1 0 1
# b 2 2 3
# c 3 4 5
# 4 6 7
Auf diese Weise können Sie die Dinge Zugriff gemäß der ersten Ebene des Index:
In [30]: df.ix['c']
Out[30]:
0 1
3 4 5
4 6 7
oder nach Beide Ebenen des Index:
In [31]: df.ix[('c','3')]
Out[31]:
0 4
1 5
Name: (c, 3)
Darüber hinaus sind alle DataFrame-Methoden gebaut, um w zu arbeiten ie DataFrames mit MultiIndices, damit Sie nichts verlieren.
Wenn Sie jedoch wirklich die zweite Ebene des Index löschen möchten, können Sie dies tun:
df.reset_index(level=1, drop=True, inplace=True)
print(df)
# 0 1
# a 0 1
# b 2 3
# c 4 5
# c 6 7
dank der Fehler nun mehr Sinn macht. – user1486457