私はデータ分析のためにJMPを自由にしようとしていますが、JMPのSplit Columns機能に相当するパンダは判別できません。私はpivot_table
機能を使用してJMPの機能の出力シナリオの一部を処理することができますpandas複数の列値によるデータフレームの再構成
In [1]: df = pd.DataFrame({'Level0': [0,0,0,0,0,0,1,1,1,1,1,1], 'Level1': [0,1,0,1,0,1,0,1,0,1,0,1], 'Vals': [1,3,2,4,1,6,7,5,3,3,2,8]})
In [2]: df
Out[2]:
Level0 Level1 Vals
0 0 0 1
1 0 1 3
2 0 0 2
3 0 1 4
4 0 0 1
5 0 1 6
6 1 0 7
7 1 1 5
8 1 0 3
9 1 1 3
10 1 0 2
11 1 1 8
、私はVals
列が独特の組み合わせによって分割された場合に困惑:私は、次のデータフレームを始めています次の出力与えるLevel0
とLevel1
:
Level0 0 1
Level1 0 1 0 1
0 1 3 7 5
1 2 4 3 3
2 1 6 2 8
を私はpd.pivot_table(df, values='Vals', columns=['Level0', 'Level1'])
を試してみましたが、これは、異なる組み合わせの平均値示します:
Level0 Level1
0 0 1.333333
1 4.333333
1 0 4.000000
1 5.333333
0123を
私も、私がしたい列のヘッダーを取得しますが、それは出力がNaN
値をたくさん持っているので、オリジナルと同じ行数を持つように出力を強制するので動作しませんpd.pivot_table(df, values='Vals', index=df.index, columns=['Level0', 'Level1']
を試してみました:
Level0 0 1
Level1 0 1 0 1
0 1 NaN NaN NaN
1 NaN 3 NaN NaN
2 2 NaN NaN NaN
3 NaN 4 NaN NaN
4 1 NaN NaN NaN
5 NaN 6 NaN NaN
6 NaN NaN 7 NaN
7 NaN NaN NaN 5
8 NaN NaN 3 NaN
9 NaN NaN NaN 3
10 NaN NaN 2 NaN
11 NaN NaN NaN 8
提案がありますか?
ありがとうayhan。よく働く。 'aggfunc = 'first''は実際にここに必要ですか?私はそれなしで同じ答えを得る。 – endangeredoxen
@endangeredoxenデフォルトはaggfuncの場合は「平均」です。単一の値があるので、実際には関係ありません。平均、最小、最大、最初または最後のいずれかが行います。 – ayhan