Когда вы загружаете CSV в pandas, вы можете легко указать количество строк, которые будут использоваться в качестве индексов столбцов, например:
import pandas
from six import StringIO
df = """a | X | X | Y | Y | Z | Z
b | C | N | C | N | C | N
c | i | i | i | j | j | j
d | 3 | 10 | 4 | 98 | 81 | 0"""
df = StringIO(df.replace(' ',''))
df = pandas.read_csv(df, sep="|", header=[0,1,2])
>>> df
a X Y Z
b C N C N C N
c i i i j j j
0 d 3 10 4 98 81 0
Но как вы производите тот же самый результат из Dataframe в памяти? Как вы просто указываете, какой набор строк должен использоваться для индекса столбца?
Конечно, не пройдя этот хак:
>>> df
0 1 2 3 4 5 6
0 a X X Y Y Z Z
1 b C N C N C N
2 c i i i j j j
3 d 3 10 4 98 81 0
path = '~/test/temp.csv'
df.to_csv(path, header=None, index=None)
df = pandas.read_csv(path, header=[0,1,2])
Или даже этот хак:
>>> df
0 1 2 3 4 5 6
0 a X X Y Y Z Z
1 b C N C N C N
2 c i i i j j j
3 d 3 10 4 98 81 0
df = df.transpose().set_index([0,1,2]).transpose()
Я пытался использовать этот метод, но он не принимает параметр axis
:
df.set_index(['a', 'b', 'c'], axis=1)