9

私は4行と4列のパンダデータフレームを持っています - これは単純なバージョンです:

import pandas as pd
import numpy as np
rows = np.arange(1, 4, 1)
values = np.arange(1, 17).reshape(4,4)
df = pd.DataFrame(values, index=rows, columns=['A', 'B', 'C', 'D'])

私がやろうとしているのは、これを 2 * 8 データフレームに変換し、各配列に B、C、および D を配置することです。したがって、次のようになります。

1  2 
1  3
1  4
5  6
5  7
5  8
9  10
9  11
9  12
13 14
13 15
13 16

パンダのドキュメントを読んで、私はこれを試しました:

df1 = pd.pivot_table(df, rows = ['B', 'C', 'D'], cols = 'A')

しかし、ソースを特定できないというエラーが表示されます(で終わります

DataError: 集計する数値型がありません

)

それに続いて、A値に基づいてデータフレームを分割したいのですが、おそらく.groupbyコマンドで処理できると思います

4

1 に答える 1

15

あなたが探しているのはmelt機能です

 pd.melt(df,id_vars=['A']) 

     A variable  value
0    1        B      2
1    5        B      6
2    9        B     10
3   13        B     14
4    1        C      3
5    5        C      7
6    9        C     11
7   13        C     15
8    1        D      4
9    5        D      8
10   9        D     12
11  13        D     16

    

による最終的なソートAが必要です

 pd.melt(df,id_vars=['A']).sort('A')  

      A variable  value
 0    1        B      2
 4    1        C      3
 8    1        D      4
 1    5        B      6
 5    5        C      7
 9    5        D      8
 2    9        B     10
 6    9        C     11
 10   9        D     12
 3   13        B     14
 7   13        C     15
 11  13        D     16

:pd.DataFrame.sort は推奨されなくなりましたpd.DataFrame.sort_values

于 2013-11-07T17:34:34.840 に答える