pandas を発見したばかりで、その機能に感銘を受けました。MultiIndex を使用して DataFrame を操作する方法がわかりません。
2 つの質問があります。
(1) DataFrame のエクスポート
ここで私の問題:このデータセット
import pandas as pd
import StringIO
d1 = StringIO.StringIO(
"""Gender,Employed,Region,Degree
m,yes,east,ba
m,yes,north,ba
f,yes,south,ba
f,no,east,ba
f,no,east,bsc
m,no,north,bsc
m,yes,south,ma
f,yes,west,phd
m,no,west,phd
m,yes,west,phd """
)
df = pd.read_csv(d1)
# Frequencies tables
tab1 = pd.crosstab(df.Gender, df.Region)
tab2 = pd.crosstab(df.Gender, [df.Region, df.Degree])
tab3 = pd.crosstab([df.Gender, df.Employed], [df.Region, df.Degree])
# Now we export the datasets
tab1.to_excel('H:/test_tab1.xlsx') # OK
tab2.to_excel('H:/test_tab2.xlsx') # fails
tab3.to_excel('H:/test_tab3.xlsx') # fails
私が考えることができる1つの回避策は、列を変更することです(Rが行う方法)
def NewColums(DFwithMultiIndex):
NewCol = []
for item in DFwithMultiIndex.columns:
NewCol.append('-'.join(item))
return NewCol
# New Columns
tab2.columns = NewColums(tab2)
tab3.columns = NewColums(tab3)
# New export
tab2.to_excel('H:/test_tab2.xlsx') # OK
tab3.to_excel('H:/test_tab3.xlsx') # OK
私の質問は次のとおりです。ドキュメントで見逃したパンダでこれを行うより効率的な方法はありますか?
2) 列の選択
この新しい構造では、特定の変数で列を選択することはできません (そもそも階層インデックスの利点です)。特定の文字列 (例: '-ba') を含む列を選択するにはどうすればよいですか?
PS:関連するこの質問を見ましたが、提案された返信を理解していません