3
データフレームスライスにマルチインデックスが作成される方法にはバグがあります。次のコードを考えてみましょう:パンダのマルチインデックスは完全にデータフレームスライスにコピーされます
シンプルmultiIndexedでカラムのデータフレーム作成import cufflinks as cf
df=cf.datagen.lines(6,mode='abc')
df.columns = MultiIndex.from_tuples([('Iter1','a'), ('Iter1','b'),
('Iter2','c'), ('Iter2','d'),
('Iter3','e'), ('Iter3','f')])
df.head()
:このデータフレームをスライス
を:
new_df = df[['Iter1','Iter2']].copy()
new_df.head()
だから、それはのように思えますデータは[OK]を提示したが、舞台裏で、完全なインデックスがまだある:
In [54]:
last_col = new_df.columns.levels[0][-1]
new_df[last_col].head()
Out[54]:
2015-01-01
2015-01-02
2015-01-03
2015-01-04
2015-01-05
:
スライスされたデータフレームの最後の列にアプローチしようとすると、今ので、私にはバグのように思える
In [52]: new_df.columns
Out[52]:
MultiIndex(levels=[[u'Iter1', u'Iter2', u'Iter3'], [u'a', u'b', u'c', u'd', u'e', u'f']],
labels=[[0, 0, 1, 1], [0, 1, 2, 3]])
は何も返しません
元のデータフレームをスライスして複数の列を2つに渡したいのですが、プログラマチックにこれらの列にアプローチする方法はないようです。
感謝を!私がスライスしたときにシーンの背後に私のために実装されていない理由は何ですか? – idoda
私の意見では、それは新しい機能であるため、おそらく後で実装されるでしょう。喜んで助けることができます! – jezrael
これは良いソリューション@jezraelです。 Upvoteは、その機能を知らなかった。 –