Pandas – пишите строки Multiindex с to_csv

Я использую to_csv для записи файла данных Multiindex DataFrame в файлы csv. Файл csv имеет один столбец, содержащий многоиндекс в кортежах, например:

('a', 'x') ('a', 'y') ('a', 'z') ('b', 'x') ('b', 'y') ('b', 'z') 

Тем не менее, я хочу иметь возможность выводить Multiindex на два столбца вместо одного столбца кортежей, например:

 a, x , y , z b, x , y , z 

Похоже, tupleize_cols может достичь этого для столбцов, но такой строки для строк нет. Есть ли способ достичь этого?

Я думаю, это будет сделано

 In [3]: df = DataFrame(dict(A = 'foo', B = 'bar', value = 1),index=range(5)).set_index(['A','B']) In [4]: df Out[4]: value AB foo bar 1 bar 1 bar 1 bar 1 bar 1 In [5]: df.to_csv('test.csv') In [6]: !cat test.csv A,B,value foo,bar,1 foo,bar,1 foo,bar,1 foo,bar,1 foo,bar,1 In [7]: pd.read_csv('test.csv',index_col=[0,1]) Out[7]: value AB foo bar 1 bar 1 bar 1 bar 1 bar 1 

Чтобы написать с дублированием индекса (вроде взлома, хотя)

 In [27]: x = df.reset_index() In [28]: mask = df.index.to_series().duplicated() In [29]: mask Out[29]: A   B foo  bar   False   bar   True   bar   True   bar   True   bar   True dtype: bool In [30]: x.loc[mask.values,['A','B']] = '' In [31]: x Out[31]:   A   B  value 0  foo  bar    1 1         1 2         1 3         1 4         1 In [32]: x.to_csv('test.csv') In [33]: !cat test.csv ,A,B,value 0,foo,bar,1 1,,,1 2,,,1 3,,,1 4,,,1 

Прочитать назад немного сложно

 In [37]: pd.read_csv('test.csv',index_col=0).ffill().set_index(['A','B']) Out[37]: value AB foo bar 1 bar 1 bar 1 bar 1 bar 1