Może masz najlepsze z obu światów za pomocą MultiIndex:
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
W ten sposób można uzyskać dostęp do rzeczy, zgodnie z pierwszym poziomem indeksu:
In [30]: df.ix['c']
Out[30]:
0 1
3 4 5
4 6 7
lub według oba poziomy indeksu:
In [31]: df.ix[('c','3')]
Out[31]:
0 4
1 5
Name: (c, 3)
Co więcej, wszystkie metody DataFrame zostały stworzone do pracy w ith DataFrames z MultiIndices, więc nic nie tracisz.
Jednakże, jeśli naprawdę chcesz usunąć drugi poziom indeksu, można to zrobić:
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
dzięki, błąd większy sens teraz. – user1486457