このサンプルでは、列ではなく列に焦点を当てるように、以前はデータベース形式(選択肢ではありません)のデータフレームを使用しています。pandas:行データを列データに整形してグループ化する
df = pd.DataFrame([['John','Sept',1,'Dec',2],['Jane','Sept',1,'Dec',3],['James','Sept',2,'Dec',2]],columns=['Name','Test 1','Score 1','Test 2','Score 2'])
Name Test 1 Score 1 Test 2 Score 2
0 John Sept 1 Dec 2
1 Jane Sept 1 Dec 3
2 James Sept 2 Dec 2
私はこの形式に変換したいと思います。
Name Test Date Score
0 Joe 1 Sept 1
1 Joe 2 Dec 2
3 Jane 1 Sept 1
4 Jane 2 Dec 3
6 James 1 Sept 2
7 James 2 Dec 2
基本的に、名前列にグループ化するようにテスト列をマージしたいと思います。これまでのところ私は私が探していたものを()、ソートの私を得た溶融で()を見て、アンスタックしました:私はかなり確信している
melt = pd.melt(df,id_vars=['Name','1st Test'])
Name Test 1 variable value
0 John Sept Score 1 1
1 Jane Sept Score 1 1
2 James Sept Score 1 2
3 John Sept Test 2 Dec
4 Jane Sept Test 2 Dec
5 James Sept Test 2 Dec
6 John Sept Score 2 2
7 Jane Sept Score 2 3
8 James Sept Score 2 2
いずれかGROUPBY、溶融、またはそこに私を取得しますアンスタック、しかし、私は構文の権利を得ることができません。提案は非常に高く評価されます。
背景:この新しいフォーマットは、スコアの変化とテストの時間をグラフ化することができると思います(希望します)。
ペア標本t検定は、それだけ 'scipy.stats.ttest_relで元の形式に非常に簡単になるだろう (DF [「1スコア」]、DFは[「2スコア」]) '。 – Neapolitan
ありがとう、私はそれを見てみましょう!残念ながら、これらの人々はt検定を望んでおらず、後で使用できるようにExcelで作ったきれいなグラフが欲しく、現在の形式は特にExcelに優しいようではありません。 – ale19