Я хотел бы создать пустой DataFrame с MultiIndex, прежде чем назначать ему строки. Я уже обнаружил, что пустые DataFrames не любят назначать MultiIndexes "на лету", поэтому я устанавливаю имена MultiIndex во время создания. Однако я не хочу назначать уровни, так как это будет сделано позже. Это лучший код, который я получил до сих пор:
def empty_multiindex(names):
"""
Creates empty MultiIndex from a list of level names.
"""
return MultiIndex.from_tuples(tuples=[(None,) * len(names)], names=names)
Что дает мне
In [2]:
empty_multiindex(['one','two', 'three'])
Out[2]:
MultiIndex(levels=[[], [], []],
labels=[[-1, -1, -1], [-1, -1, -1], [-1, -1, -1]],
names=[u'one', u'two', u'three'])
и
In [3]:
DataFrame(index=empty_multiindex(['one','two', 'three']))
Out[3]:
one two three
NaN NaN NaN
Ну, я не использую эти NaNs. Я могу легко их отбросить позже, но это, очевидно, хакерское решение. У кого-нибудь есть лучший?