Я хотел бы создать пустой DataFrame с MultiIndex, прежде чем назначать ему строки. Я уже обнаружил, что пустым фреймам данных не нравится, когда им на лету назначаются MultiIndex, поэтому я устанавливаю 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
Ну, мне эти NaN не нужны. Я могу легко удалить их позже, но это явно хакерское решение. У кого-нибудь есть лучше?
df2.loc[(name, key2, True), :] = df1.loc[(key1, key2), :].sum()
), чем пытатьSeries
перед назначением, добавляя к нему. А поддерживать параллельные кадры данных для индексов и данных было бы еще хуже. - person dmvianna   schedule 04.02.2015